UpdatePanel中的ListView中的LinkButton导致完整的回发
本文关键字:中的 ListView LinkButton UpdatePanel | 更新日期: 2023-09-27 17:49:55
我在UpdatePanel的ListView中有一个LinkButton。我希望按钮(好吧,它们中的任何一个)引起部分回发,但它们引起整个页面回发。
<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中的ClientIDMode设置。. NET 4允许您指定ASP。. NET为HTML元素生成id属性。
在以前版本的ASP。. NET(即pre 4),默认行为相当于ClientIDMode的AutoID设置。但是,现在默认设置是Predictable。
阅读微软文章
AutoId是必需的,因为脚本管理器期望HTML控件在以前的。net版本中生成。
我通过在适用页面的page指令上设置:ClientIDMode="AutoID"
来解决这个问题,如下所示:
<%@ Page Title="" ClientIDMode="AutoID" Language="C#"%>
尝试添加CommandName
, CommandArgument
属性和OnCommand
事件处理程序到您的链接按钮,像这样:
<asp:LinkButton CommandName='test' CommandArgument='<%# Eval("Title") %>' ID="lnkAddTarget" runat="server" OnCommand="LinkButtonCommandEventHandler" />
或者-添加OnItemCommand
处理器到整个ListView
我通过在适用页面的页面指令上设置: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# "%>