1

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>
4

1 回答 1

1

如果您真的想避免回发(UpdatePanels 仍然进行部分回发),那么我建议在客户端捕获链接按钮的单击事件,然后对服务器进行 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";
}
于 2013-11-04T13:05:43.000 回答