Как получить выбранные значения строк DevExpress XtraGrid? - программирование
Подтвердить что ты не робот

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

Рассмотрим следующее изображение

enter image description here

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

void dataGridView1_CellClick_1(object sender, DataGridViewCellEventArgs e) {
    TBGRNo.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
    TBSName.Text = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
    TBFName.Text = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString();
}

Мой вопрос: как я буду делать то же самое в элементе управления DevExpress XtraGrid?

4b9b3361

Ответ 1

Вы можете сделать это несколькими способами. Вы можете использовать привязку данных (типичная инициализация после InitializeComponent();)

textBox1.DataBindings.Add(new Binding("Text", yourBindingSource, 
                    "TableName.ColumnName", true, DataSourceUpdateMode.OnPropertyChanged));

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

или в FocusedRowChanged путем назначения из одного из этих методов:

textBox1.Text = gridView1.GetDataRow(e.FocusedRowHandle)["Name"].ToString();
textBox1.Text = gridView1.GetFocusedDataRow()["Name"].ToString();
textBox1.Text = (gridView1.GetFocusedRow() as DataRowView).Row["Name"].ToString();
textBox1.Text = gridView1.GetFocusedRowCellValue("Name").ToString();

Ответ 2

Вот как я следовал,

int[] selRows = ((GridView)gridControl1.MainView).GetSelectedRows();
DataRowView selRow = (DataRowView)(((GridView)gridControl1.MainView).GetRow(selRows[0]));
txtName.Text = selRow["name"].ToString();

Также вы можете выполнять итерацию по выделенным строкам с использованием массива selRows. Здесь код описывает, как получить данные только из первой выбранной строки. Вы можете вставить эти строки кода в событие щелчка сетки.

Ответ 3

Я нашел решение следующим образом:

private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
{
    TBGRNo.Text = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "GRNo").ToString();
    TBSName.Text = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "SName").ToString();
    TBFName.Text = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "FName").ToString();            
}

enter image description here

Ответ 4

Какую из своих гридов вы используете? XtraGrid или AspXGrid? Вот часть, взятая из одного из моих приложений с помощью XtraGrid.

private void grdContactsView_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
{
    _selectedContact = GetSelectedRow((DevExpress.XtraGrid.Views.Grid.GridView)sender);
}

private Contact GetSelectedRow(DevExpress.XtraGrid.Views.Grid.GridView view)
{
    return (Contact)view.GetRow(view.FocusedRowHandle);
}

У моей сетки есть список связанных объектов, связанных с ним. Каждый раз, когда нажимается строка, я загружаю выбранную строку в _selectedContact. Надеюсь это поможет. Вы найдете много информации об использовании своих элементов управления, купив их сайты поддержки и документации.

Ответ 5

Для VB.Net

CType(GridControl1.MainView, GridView).GetFocusedRow()

Для С#

((GridView)gridControl1.MainView).GetFocusedRow();

пример свяжите данные с помощью linq, поэтому используйте

Dim selRow As CUSTOMER = CType(GridControl1.MainView, GridView).GetFocusedRow()

Ответ 6

Все, что вам нужно сделать, это использовать метод GetFocusedRowCellValue элемента управления gridView и поместить его в событие RowClick.

Например:

private void gridView1_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
{
    if (this.gvCodigoNombres.GetFocusedRowCellValue("EMP_dni") == null)
        return;
    MessageBox.Show(""+this.gvCodigoNombres.GetFocusedRowCellValue("EMP_dni").ToString());            
}

Ответ 7

var rowHandle = gridView.FocusedRowHandle;

var obj = gridView.GetRowCellValue(rowHandle, "FieldName");

//For example  
int val= Convert.ToInt32(gridView.GetRowCellValue(rowHandle, "FieldName"));