我们如何对 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 值