【问题标题】:Repeater, Linkbutton and ModalPopupExtender without postback没有回发的中继器、链接按钮和 ModalPopupExtender
【发布时间】:2012-09-03 14:30:01
【问题描述】:

这是我的问题。

我有一个中继器。里面有很多文本框。在最右边的列中,有一个链接按钮。单击此链接按钮将显示一个modalpopupextender,它将显示所选行的详细记录。

我让它工作得很好,但它很慢,因为当你点击链接按钮时,它会刷新整个页面。

我不想重新加载中继器,因为这是非常慢的部分。

我尝试添加一个 updatePanel(updatePanel 内的中继器),但当然由于中继器位于 updatePanel 内,它仍会重新加载中继器。

所以问题是,我该怎么做,当点击链接按钮时,它不会重新加载中继器...

任何想法将不胜感激。 顺便说一句,我正在用.net 2.0,c#开发它

【问题讨论】:

    标签: c# asp.net ajax repeater


    【解决方案1】:
    Try this one.
    
    <asp1:UpdatePanel ID="updatepanel4" runat="server" >
    <ContentTemplate>
     <table id="AssignedRequest" class="tablecont" runat="server" style="width: 900px;" >
     <tr>
       <td>
      <div style=" display:block; width:900px; height:350px;overflow:scroll; ">
        <asp:Repeater runat="server" ID="RepeaterRequest"> 
         <HeaderTemplate >
         <table class="list_table" border="0" cellpadding="0" cellspacing="0" width="100%">
        <tr>
            <th>Name</th>
            <th></th>
        </tr>
    </HeaderTemplate>
    <ItemTemplate>
      <tr>
        <td><%# Eval("NAME")%></td>
    
    <td><a onclick="window.open(this.href,this.target,'directories=no,
         menubar=no,resizable=no,scrollbars=1,
         status=no,toolbar=no,addressbar=no,fullscreen=yes'); 
         return false;" href="View.aspx?name=<%#Eval("NAME")%>">View</a></td>
    </tr>
    </ItemTemplate>
    <FooterTemplate>
    </table>
    
    </FooterTemplate>
    </asp:Repeater>
    </div>
    </td>
     </tr>
    </table>
     </ContentTemplate>
    </asp1:UpdatePanel>
    

    【讨论】:

      【解决方案2】:

      在后面的代码中注册,这个代码你在绑定之后添加,例如在你的Page_Load中,(你也可以使用ItemDataBound或ItemCreated委托)。

              rpt.DataBind();
              foreach (RepeaterItem ri in rpt.Items)
              {
                  if (ri.ItemType == ListItemType.Item || ri.ItemType == ListItemType.AlternatingItem)
                  {
                      LinkButton lnkButton1 = (LinkButton)ri.FindControl("lnkButton1");
                      ScriptManager1.RegisterAsyncPostBackControl(lnkButton1);
                  }
              }
      

      【讨论】:

      • 它在页面加载时引发错误。在 UpdatePanel“UpdatePanel1”中找不到触发器 ID 为“lnkbutton1”的控件。我使用的是中继器而不是 gridview。
      • 我的链接按钮中有一个 runat=server。
      • id必须对应,并且区分大小写
      • 我复制粘贴了它,所以我确定它是一样的。这是我的代码示例。 .... HeaderTemplate> ....详细信息​​ton>
      • 我确实有,在上面..
      【解决方案3】:

      为什么不寻求像主子关系这样的东西。您是否需要与您向用户显示的子数据进行进一步交互?如果有,请说明性质。

      假设您要显示的子数据是简单的数据,旨在将相关数据简单地传达给用户,您可以使用 jQuery 和中继器的组合来实现您的目标。

      您显示主数据的第一个中继器。针对中继器中的每一行,您会在此处显示一个显示按钮。您在这里不需要链接按钮;只需一个简单的锚就可以了。您必须在其中编写 js 才能切换正确的子数据。

      所有子数据也应该重复。但起初并未向用户显示。只有那个特定的子项目应该被显示——这由在主中继器上单击的显示锚适当地触发。剩下的都是 js/css。

      以下是演示该概念的示例项目的链接。

      http://www.coderun.com/ide/?w=2ObqOpjZz0qt7OrXYmmxwA

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-09
        • 1970-01-01
        相关资源
        最近更新 更多