如何在aspxgridview devexpress中获取所选行的值
本文关键字:获取 aspxgridview devexpress | 更新日期: 2023-09-27 18:27:57
我有一个devexpress aspxgridview,我需要获取所选行的值。有人知道如何在不回发的情况下获取所选行的主键值吗。OnSelectionChanged事件未被触发。如何在不回发的情况下触发OnSelectionChanged事件。
<dx:ASPxGridView ID="popupProductsGrid" runat="server" AutoGenerateColumns="False" Width="815px" KeyFieldName="LOGICALREF" ClientInstanceName="popupProductsGrid"
OnSelectionChanged="popupProductsGrid_SelectionChanged" OnCustomCallback="popupProductsGrid_CustomCallback">
<Columns>
<dx:GridViewDataTextColumn Caption="KOD" FieldName="URUNKOD" ShowInCustomizationForm="True" VisibleIndex="1" Width="100px">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn Caption="AÇIKLAMA" FieldName="URUN" ShowInCustomizationForm="True" VisibleIndex="2" Width="250px">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn Caption="STOK" FieldName="MIKTAR" ShowInCustomizationForm="True" VisibleIndex="3" Width="50px">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn Caption="LOGICALREF" FieldName="LOGICALREF" ShowInCustomizationForm="True" VisibleIndex="0" Visible="False" Width="100px">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn Caption="BİRİM" FieldName="ANABIRIM" ShowInCustomizationForm="True" VisibleIndex="4" Width="40px">
</dx:GridViewDataTextColumn>
</Columns>
<SettingsBehavior AllowFocusedRow="True" AllowSelectByRowClick="True" AllowSelectSingleRowOnly="True" />
<Settings ShowFilterRow="True" />
<SettingsText EmptyDataRow="Listelenecek Kayıt Bulunamadı" />
</dx:ASPxGridView>
protected void popupProductsGrid_SelectionChanged(object sender, EventArgs e)
{
DataRow dr = popupProductsGrid.GetDataRow(popupProductsGrid.FocusedRowIndex);
Session["stok_kodu"] = dr[0].ToString();
}
还有一件事,我不想寄回去。所以我尝试了其他方法,比如HtmlRowPrepared和CustomCallback。
protected void popupProductsGrid_HtmlRowPrepared(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewTableRowEventArgs e)
{
if (e.KeyValue != null)
{
string parameter = e.KeyValue.ToString();
e.Row.Attributes.Add("onclick", "popupProductsGrid.PerformCallback('" + parameter + "')");
}
}
protected void popupProductsGrid_CustomCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewCustomCallbackEventArgs e)
{
if (e.Parameters != "")
{
Session["stok_kodu"] = e.Parameters;
}
}
DevExpress在几乎所有的控件中都使用回调,这些控件基本上有点像回发,但没有重新加载整个页面,只加载控件本身(在您的情况下,它将是ID为popupProductsGrid的ASPxGridView)。
因此,假设您只想使用回调,这样页面就不会完全为ASPxGridView刷新,那么您将需要
- 设置网格的ClientInstanceName属性(如popupProductsGrid)
- 处理CustomCallback事件(您已经在做了)
- 每当用户单击一行时,请在客户端使用PerformCallback函数(这样您就可以发送当前行索引,并从服务器端的索引中获得所需的主键和其他行值)
实现这一点的最简单方法是使用FocusedRowChanged客户端事件来触发";点击";并且通过该调用PerformCallback将源对象属性GetFocusedRowIndex发送到服务器端,以便您可以在服务器端代码上使用网格的>GetRowValues方法(CustomCallbackevent)
在ASPxGridView.CustomCallback事件的文档末尾有一个很好的例子,它完全符合您的要求。
还要记住,要使回调按需工作,您需要将网格的EnableCallBacks属性设置为false,并将其设置为true(默认行为是使用回调而不是回发,但请检查是否正确设置了这两个属性)。
USE ASPxGridView.GetSelectedFieldValues方法在服务器端获取选定的行值。