我希望LinkButton
中GridView
的点击事件不调用网格视图的OnRowCommand
事件。
原因是因为我希望将其封装在UpdatePanel
中并更新ErrorUpdateTextBox
而不执行回发。
<asp:GridView ID="DataSourceMappingGridView" runat="server" DataKeyNames="Index" ClientIDMode="Static" OnRowCommand="DataSourceMappingGridView_RowCommand" OnRowDataBound="DataSourceMappingGridView_RowDataBound">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:UpdatePanel ID="ErrorUpdatePanel" runat="server">
<ContentTemplate>
<asp:LinkButton ID="ErrorTextLinkButton" runat="server" Text='View Errors' OnClick="ErrorTextLinkButton_Click" />
<asp:TextBox ID="ErrorUpdateTextBox" runat="server" Text="">
</ContentTemplate>
</asp:UpdatePanel>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
答案 0 :(得分:1)
如果你真的想避免回帖(UpdatePanel
仍然做部分回发),那么我建议捕获链接按钮的点击事件客户端,然后对服务器进行AJAX调用保存/获取与被点击的链接按钮相关的任何数据,如下所示:
删除OnClick
属性(保留runat="server"
属性,以便在绑定期间将ID值添加到链接按钮),并为class
添加LinkButton
属性标记,以允许jQuery轻松连接点击事件处理程序,如下所示:
<asp:LinkButton ID="ErrorTextLinkButton" runat="server" Text='View Errors'
class="error" />
$(document).ready(function() {
$('.error').click(function() {
$.ajax({
type: "POST",
url: "PageName.aspx/GetError",
data: "{'id':'7'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data) {
// Do something error data returned here
}
});
});
});
最后,创建一个ASP.NET AJAX页面方法,如下所示:
[WebMethod]
public static string GetError(int id)
{
// Go and get error data from database or service, etc.
return "Your error message here";
}