2012-10-06 436 views
16

Observa la siguiente imagen¿Cómo obtener los valores de fila seleccionados de DevExpress XtraGrid?

enter image description here

Puedo obtener los valores de las filas seleccionadas en los tres cuadros de texto que se muestran en la figura cuando hago clic en una celda utilizando el código siguiente.

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(); 
} 

Mi pregunta es: ¿cómo haré lo mismo en DevExpress XtraGrid control ??

Respuesta

24

Usted puede hacer esto de varias maneras. Se puede utilizar el enlace de datos (típico inicializado después de InitializeComponent();)

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

o utilizar un DataLayoutControl (si se va a utilizar cuadro de texto para su edición, realmente recomiendo pasar algún tiempo para aprender a utilizar este componente

.

o en FocusedRowChanged mediante la asignación de uno de estos métodos:

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(); 
+0

puede por favor responder a esto http: // stackoverflow.com/questions/32393926 – kashif

3

¿Cuál de sus Grids está usando? XtraGrid o AspXGrid? Aquí hay una pieza tomada de una de mi aplicación usando 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); 
} 

My Grid tiene una lista de objetos de contacto vinculados. Cada vez que se hace clic en una fila, cargo la fila seleccionada en _selectedContact. Espero que esto ayude. Encontrará mucha información sobre el uso de sus controles comprando visitando sus sitios de soporte y documentación.

+0

Después de haber encontrado la solución que respondió a mi pregunta a mí mismo. De todos modos, muchas gracias – kashif

9

he encontrado la solución de la siguiente manera:

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

25

Aquí es la forma en que he seguido,

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

También puede recorrer las filas seleccionadas utilizando la matriz selRows. Aquí el código describe cómo obtener datos solo desde la primera fila seleccionada. Puede insertar estas líneas de código para hacer clic en el evento de la grilla.

+1

mira mi propia respuesta sobre mi pregunta. eso es probablemente más simple y esier – kashif

+1

Sí, su respuesta es más fácil. Pero estaba tratando de obtener detalles de todas las filas seleccionadas (con selección múltiple). Entonces cambio esta respuesta para que coincida con tu pregunta. Así que gracias por tu respuesta. ¡Espero que esto pueda ayudar a alguien! – mili

+0

hmm good mili. buen esfuerzo – kashif

1

Para VB.Net

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

para C#

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

datos de ejemplo se unen por lo que el uso de LINQ

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

Todo lo que tiene que hacer es utilizar el método deGetFocusedRowCellValue del control gridView y ponerlo en el evento RowClick.

Por ejemplo:

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());    
} 
-1
var rowHandle = gridView.FocusedRowHandle; 

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

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

Si bien este fragmento de código puede resolver la pregunta, [incluyendo una explicación] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) realmente ayuda a mejorar la calidad de su publicación. Recuerde que usted está respondiendo la pregunta a los lectores en el futuro, y es posible que esas personas no sepan los motivos de su sugerencia de código. [De revisión] (https://stackoverflow.com/review/low-quality-posts/18436116). –

Cuestiones relacionadas