UpdatePanel的ListView中的LinkBut​​ton导致完全回发。

| 我在UpdatePanel的ListView中有一个LinkBut​​ton。我希望按钮(好吧,其中的任何一个)引起部分回发,但是它们却引起整个页面的回发。
<asp:UpdatePanel ID=\"upOutcomes\" UpdateMode=\"Conditional\" runat=\"server\">
  <ContentTemplate>
      <asp:ListView ID=\"lvTargets\" runat=\"server\" onitemdatabound=\"lvTargets_ItemDataBound\">
        <ItemTemplate>
          <asp:LinkButton ID=\"lnkAddTarget\" CssClass=\"lo\" Text=\'<%# Eval(\"Title\") + \" <b>\" + Eval(\"Level\") + Eval(\"SubLevel\") + \"</b>\" %>\' runat=\"server\"></asp:LinkButton>
        </ItemTemplate>
      </asp:ListView>
  </ContentTemplate>
</asp:UpdatePanel>
我在stackoverflow上发现了另一条建议添加此内容的帖子:
protected void lvTargets_ItemDataBound(object sender, ListViewItemEventArgs e) {
  var lb = e.Item.FindControl(\"lnkAddTarget\") as LinkButton;
  tsm.RegisterAsyncPostBackControl(lb);  // ToolkitScriptManager
}
没什么不同... 也有一些其他类似的帖子,但是我找不到解决方案!有任何想法吗?     
已邀请:
ASP.NET 4中的ClientIDMode设置使您可以指定ASP.NET如何生成HTML元素的id属性。 在ASP.NET的早期版本(即pre 4)中,默认行为等同于ClientIDMode的AutoID设置。但是,默认设置现在是可预测的。 阅读微软文章 为此需要AutoId,因为脚本管理器希望HTML控件在.NET的早期版本中生成。     
我通过在适用页面的页面指令上设置“:2”来解决此问题,如下所示:
<%@ Page Title=\"\" ClientIDMode=\"AutoID\" Language=\"C#\"%>
一切正常。     
尝试将
CommandName
CommandArgument
属性和
OnCommand
事件处理程序添加到链接按钮,如下所示:
<asp:LinkButton CommandName=\'test\' CommandArgument=\'<%# Eval(\"Title\") %>\' ID=\"lnkAddTarget\" runat=\"server\" OnCommand=\"LinkButtonCommandEventHandler\" />
或者-在整个ListView中添加
OnItemCommand
处理程序。     
我通过在适用页面的页面指令上设置:ClientIDMode = \“ AutoID \”来解决此问题,如下所示:9,从而解决了我以前的问题,即ListView中的ASP链接按钮引起完整的回发。 但是,这可能要求客户端代码(Jquery,Javascript)上的任何ASP控件都必须以其全名来引用,因为它会出现在浏览器源代码中(我在Firefox中使用Firebug来获取名称)。例如,此Jquery函数
$(\"#ContentPlaceHolder1_btnCancelReferCustomer\").click(function () {
                    $(\"#divRefer\").hide({ effect: \"slide\", duration: 200 });
                    return false;
                });
更改为此(请注意,选择器中的asp按钮名称已更改):
$(\"#ctl00_ContentPlaceHolder1_btnCancelReferCustomer\").click(function () {
                    $(\"#divRefer\").hide({ effect: \"slide\", duration: 200 });
                    return false;
                });
    
我通过在适用页面的页面指令上设置:ClientIDMode = \“ AutoID \”解决了此问题,如下所示:<%@页面标题= \“ \” ClientIDMode = \“ AutoID \”语言= \“ C#\”% >     

要回复问题请先登录注册