如何获取所选行Devexpress GridView的字段值?

时间:2013-10-06 06:44:25

标签: c# asp.net devexpress aspxgridview

我使用DevexpressGridView显示所有TOPIC (id,title,content)

<dx:ASPxGridView ID="gv" runat="server"
OnSelectionChanged="gv_SelectionChanged" >

我有grid_SelectionChanged事件:

protected void gv_SelectionChanged(object sender, EventArgs e)
    {

        int id= selected row...???; //how can I get the value of selected row
        string sql = "select * from TOPIC where idTOPIC="+id;
        DataTable topic = l.EXECUTEQUERYSQL(sql);
        TextBox1.Text = topic.Rows[0][1].ToString();
    }

...

DevGridview中似乎不存在gv.SelectedRow方法。

根据建议,我尝试使用FocusedRowIndex方法,但我真的不知道正确的语法来获取所选行的值。

帮助!!!

4 个答案:

答案 0 :(得分:8)

更改选择与更改聚焦行不同。有关两者之间的区别,请参阅Selection的文档。

您可以使用gv.GetSelectedFieldValues获取所选的行。

var ids = gv.GetSelectedFieldValues("id");
foreach( var id in ids )
    DoSomethingWithObject(id);

如果您对焦点行感兴趣,则应该处理FocusedRowChanged事件。

您可以使用FocusedRowIndex值来索引gv.DataSource的行,例如:

DataTable ds = (DataTable)gv.DataSource;
var id = ds.Rows[gv.FocusedRowIndex]["id"];

或者您可以使用var id = gv.GetRowValues(gv.FocusedRowIndex, "id")

答案 1 :(得分:1)

经过很长一段时间搜索谷歌后,我发现我的回答是: http://www.devexpress.com/Support/Center/Question/Details/Q347704

使用ASPxGridView.GetSelectedFieldValues方法获取服务器端的选定行值。

答案 2 :(得分:1)

您还可以选择数据行

int rowHandle = gridView1.FocusedRowHandle;
   if (rowHandle != DevExpress.XtraGrid.GridControl.InvalidRowHandle)
   {
    return this.gridView1.GetDataRow(rowHandle);
   }

这将返回DataRow

请注意,这是我在WinForms中使用Devexpress gridControl的时候

答案 3 :(得分:0)

如果您只想获取ID字段值,可以使用此

int id =  Convert.ToInt32(gv.GetRowValues(gv.FocusedRowIndex, "ID").ToString());

如果你有一个对象,你可以使用这个

Personels selectedPersonel = gv.GetRow(gv.FocusedRowIndex) as Personels;

获取值方法

int ID = selectedPersonel.ID;