我们如何对 RowCommand、RowDeleting 等 gridview 事件进行 ajax 调用

Posted

技术标签:

【中文标题】我们如何对 RowCommand、RowDeleting 等 gridview 事件进行 ajax 调用【英文标题】:How can we do ajax calls for gridview events like RowCommand, RowDeleting 【发布时间】:2018-05-11 21:12:05 【问题描述】:

我正在开发一个 asp.net Web 应用程序,其中所有事件都在 .ASPX 中生成,代码背后的代码也用 C# 编写,并且两者都运行良好。但现在我想使用 AJAX 调用来调用 c# 服务器端事件。

我知道如何使用 AJAX 调用创建和调用 webmethod,但不知道如何通过 AJAX 处理 (object sender, GridViewRowEventArgs e) 这些参数。

提前致谢。

ASPX 代码:

<asp:GridView ID="grd" runat="server"
 AutoGenerateColumns="false" 
 OnRowCommand="grd_RowCommand">
 <Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btn" runat="server" CommandName="AddRow" Text="AddRow">
 </asp:Button>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

C#代码:

protected void grd_RowCommand(object sender, GridViewCommandEventArgs e)

if (e.CommandName == "AddRow")

 //Do Something


【问题讨论】:

您能稍微展示一下您的代码以了解您的要求吗? 如果是网格事件,更好的解决方案是使用更新面板.. 谢谢@Ravi,我现在已经编辑了这个问题。我想从 ajax 调用中调用 grd_RowCommand 事件。 @AbdulRehmanSayed 感谢您的热烈欢迎。目前,更新面板中的gridview,但仍然出现进度条并且加载需要时间。 【参考方案1】:

通常不回发到服务器的控件自然会使用一些 ASP.NET JS 方法来触发回发,这会设置两个隐藏字段值:__EVENTTARGET 和 __EVENTARGUMENT(参见另一个上下文中的this post with some brief details)。这些字段应包含相关的对象/事件 arg 数据。因此,您的解决方案可能需要能够使用它,调用页面请求,并解析出响应以替换网格,也许这会起作用。但是,我认为这可能有问题。

由于您使用的是 Web 表单,我建议您最好使用 UpdatePanel,或者考虑使用 using this technique 从 AJAX 响应动态加载网格。不过,网格内的任何事件都需要通过 JS 处理。

【讨论】:

以上是关于我们如何对 RowCommand、RowDeleting 等 gridview 事件进行 ajax 调用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 c# ASP.NET 中使用 GridView_RowCommand 事件从 GridView 获取图像

在 GridView RowCommand 中获取 DataKey 值

GridView RowCommand 事件未触发

获取GridView中RowCommand的当前索引行

Bootbox 确认:返回客户端结果以便回发到 rowCommand

在 Asp.net Rowcommand 事件中获取行索引