【问题标题】:How to handle OnRowClick event of ASPxGridView in code behind?如何在后面的代码中处理 ASPxGridView 的 OnRowClick 事件?
【发布时间】: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


【解决方案1】:

试试这个:
1.将ASPxGridView1.SettingsBehavior.ProcessFocusedRowChangedOnServer设置为true。
2.处理服务端FocusedRowChanged事件

【讨论】:

  • 非常接近,但你是对的。我改为启用了 SelectionChange,它运行良好。谢谢。
【解决方案2】:

这会做你想做的..

就我而言,

当用户单击行时,我想从 ASPxGridView 中获取字段 ('ID') 的内容...

为行单击创建 ClientSideEvent 并放置“RowClick(s, e);”在函数中。

创建事件将调用的实际函数,如下所示 - 这是棘手的部分;

不要使用 GetFocusedRowIndex() 来获取索引,因为它是 FOCUSED 索引。

使用 e.visibleIndex

function RowClick(s, e) {
    // Do callback to get the row data for 'ID' using current row.
    MyAspxGridView.GetRowValues(e.visibleIndex, 'ID', OnGetRowId);
}

创建您的回调以获取您想要的字段。我正在获取“ID”。

function OnGetRowId(idValue) {
    alert('ID: ' + idValue.toString());
}

【讨论】:

    猜你喜欢
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多