忽略GridView中的OnRowCommand

时间:2013-11-04 12:08:49

标签: c# asp.net .net gridview updatepanel

我希望LinkButtonGridView的点击事件调用网格视图的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>

1 个答案:

答案 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";
}