0

我正在使用带有 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 行上的一行从代码后面调用函数?

4

2 回答 2

2

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

于 2013-01-17T18:43:49.147 回答
1

这会做你想要的..

就我而言,

当用户单击行时,我想从 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());
}
于 2014-12-18T18:41:08.273 回答