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

Jam*_*mes 28 c# asp.net ajax listview asp.net-ajax

我在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>
Run Code Online (Sandbox Code Playgroud)

我在stackoverflow上发现了另一篇帖子,建议添加:

protected void lvTargets_ItemDataBound(object sender, ListViewItemEventArgs e) {
  var lb = e.Item.FindControl("lnkAddTarget") as LinkButton;
  tsm.RegisterAsyncPostBackControl(lb);  // ToolkitScriptManager
}
Run Code Online (Sandbox Code Playgroud)

它没有什么区别......

还有一些其他类似的帖子,但我找不到解决方案!有任何想法吗?

小智 38

ASP.NET 4中的ClientIDMode设置允许您指定ASP.NET如何为HTML元素生成id属性.

在以前的ASP.NET版本(即pre 4)中,默认行为等同于ClientIDMode的AutoID设置.但是,默认设置现在是可预测的.

阅读微软文章

由于脚本管理器希望在以前版本的.NET中生成HTML控件,因此需要AutoId.

  • 非常感谢!在<asp:ListView ...>中添加了ClientIDMode ="AutoID"作为属性,已修复!+1 (4认同)