【发布时间】:2013-01-17 15:49:41
【问题描述】:
我正在使用带有 VB 的 ASP.Net 在网格视图中显示记录。 在普通的 ASP GridView 中,我可以简单地从后面的代码中处理 SelectedIndexChanged 事件,如下所示:
Sub mySub(ByVal sender as Object, ByVal e As EventArgs)
Handles GridView1.SelectedIndexChanged
Dim id as String = GridView1.SelectedRow.Item(0).ToString
Response.Redirect("Customer.aspx?ID=" & id) 'Or Whatever
End Sub
现在我正在尝试做同样的事情,但使用 DevExpress 附带的 ASPxGridView。显然,没有可以直接从后面的代码处理的内置事件。我必须使用 javascript 进行客户端点击,我不介意,但我尝试将点击事件从客户端传递到背后的服务器代码的所有尝试都失败了。
这是我的 ASP 页面
<dx:ASPxGridView ID="ASPxGridView1" runat="server" AutoGenerateColumns="False"
KeyFieldName="id" Width="550px" OnSelectionChanged="row_selected" >
<SettingsBehavior AllowFocusedRow="True" />
<SettingsText Title="Customers" />
<Columns>
<dx:GridViewDataTextColumn FieldName="id" ReadOnly="True" VisibleIndex="1">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="Name" VisibleIndex="2">
</dx:GridViewDataTextColumn>
</Columns>
<Settings ShowTitlePanel="True" />
<ClientSideEvents FocusedRowChanged="function(s, e) {
row_selected();
}" />
</dx:ASPxGridView>
这是我背后的代码(永远不会被调用)
Sub row_selected()
Dim id as String = ASPxGridView1.SelectedRow.Item(0).ToString
Response.Redirect("Customers.aspx?ID=" & id)
End Sub
如何通过单击 ASPxGridView 行上的一行从后面的代码中调用函数?
【问题讨论】:
-
你说你已经设法让客户端点击事件工作了?您是否考虑过设置一个处理程序来响应单击事件而不是 .aspx 网页上的代码。如果您在 javascript 中进行了 AJAX 调用,您可以向处理程序发出请求并接收响应。
-
@markp3rry 我想在将用户重定向到另一个页面之前执行几个步骤。这不能从客户端完成。我需要在服务器中触发事件。我不知道如何
-
处理程序将在服务器端运行。阅读 .NET 中的通用处理程序(您应该能够将其添加到您的 Visual Studio 项目中,它具有 .ashx 扩展名)以及如何从 javascript 调用它们。
-
@markp3rry 通用处理程序只会方便将用户重定向到其他 URL。在重定向用户之前我需要做的是运行一些代码,将一些值存储到数据库中,获取一些信息,计算数字,然后转到该页面。这就是为什么我需要函数背后的代码从 .VB 文件运行
-
错了。我在很多不同的应用程序中使用它们。您可以通过 HttpContext 从网页向它们提供数据,运行您需要的所有服务器端内容,然后发布响应。我正在看我现在写的一个,它需要五个输入参数,通过 SqlCommand 将它们插入数据库并返回 text/xml 格式的响应。
标签: asp.net devexpress aspxgridview