如何解决UpdatePanel的ListView中的LinkButton导致完全回发
| 我在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.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#\”% >
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。