Как получить значение поля выбранной строки Devexpress GridView?

Я использую 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();
    }

...

кажется gv.SelectedRow метод не существует в DevGridview.

как рекомендовано, я пробовал с FocusedRowIndex метод, но я действительно не знаю правильного синтаксиса, чтобы получить значение выбранной строки.

помогите!!!

4 ответов


изменение выбора отличается от изменения сфокусированной строки. См. документацию для 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").


Я нашел свой ответ здесь после долгого времени поиска в google: http://www.devexpress.com/Support/Center/Question/Details/Q347704

использовать ASPxGridView.GetSelectedFieldValues метод get выбранные значения строк на стороне сервера.


вы также можете получить выбранную строку данных в качестве

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

это вернет DataRow

обратите внимание, что это когда я использую Devexpress gridControl в WinForms


Если вы хотите получить только значение поля ID, вы можете использовать это

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

Если у вас есть объект, вы можете использовать этот

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

и получить метод значения

int ID = selectedPersonel.ID;