繁体   English   中英

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

[英]LinkButton in ListView in UpdatePanel causes full postback

我在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设置。 但是,默认设置现在是可预测的

阅读微软文章

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

我通过在适用页面的页面指令上设置: ClientIDMode="AutoID"来解决此问题,如下所示:

<%@ Page Title="" ClientIDMode="AutoID" Language="C#"%>

这工作正常。

我通过在适用页面的页面指令上设置:ClientIDMode =“AutoID”来解决这个问题,如下所示: <%@ Page Title="" ClientIDMode="AutoID" Language="C#"%> ,从而解决了我之前的问题在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”来解决此问题,如下所示:<%@ Page Title =“”ClientIDMode =“AutoID”Language =“C#”%>

尝试将CommandNameCommandArgument属性和OnCommand事件处理程序添加到您的链接按钮,如下所示:

<asp:LinkButton CommandName='test' CommandArgument='<%# Eval("Title") %>' ID="lnkAddTarget" runat="server" OnCommand="LinkButtonCommandEventHandler" />

或者 - 将OnItemCommand处理程序添加到整个ListView。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM