我使用ASP.Net和VB在网格视图中显示记录。 在普通的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行上的行来调用代码后面的函数?
答案 0 :(得分:2)
试试这个:
1.将ASPxGridView1.SettingsBehavior.ProcessFocusedRowChangedOnServer设为true
2.处理服务器端FocusedRowChanged事件
答案 1 :(得分:1)
这会做你想要的......
就我而言,
当用户点击该行时,我希望从ASPxGridView获取字段(&#39; ID&#39;)的内容...
为行单击创建ClientSideEvent并放置&#34; RowClick(s,e);&#34;在功能中。
创建事件将调用的实际函数,如下所示 - 这是棘手的部分;
不要使用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&#39;
function OnGetRowId(idValue) {
alert('ID: ' + idValue.toString());
}