form example ejemplos datos databinding data agregar c# datagridview

c# - example - Datagridview selección de fila completa, pero obtener valor de celda única



datagridview c# windows form (13)

Tengo una vista de cuadrícula de datos que es una selección de fila completa. ¿Cómo puedo obtener los datos de solo una celda determinada sin importar en qué celda de la fila se hizo clic, ya que resalta toda la fila.



En el evento CellClick puedes escribir el siguiente código

string value = datagridviewID.Rows[e.RowIndex].Cells[e.ColumnIndex].FormattedValue.ToString();

Usando el código del bove obtendrás el valor de la celda que pinchaste. Si desea obtener el valor de la columna paricular en la fila cliqueada, simplemente reemplace e.ColumnIndex con el índice de columna que desea


también puede obtener los valores de la celda ya que la selección actual está referenciada bajo CurrentRow

dataGridView1.CurrentRow.Cell[indexorname].FormattedValue

Aquí puede usar el índice o el nombre de la columna y obtener el valor.


Solo use: dataGridView1.CurrentCell.Value.ToString()

private void dataGridView1_MouseDoubleClick(object sender, MouseEventArgs e) { MessageBox.Show(dataGridView1.CurrentCell.Value.ToString()); }

o

// dataGrid1.Rows[yourRowIndex ].Cells[yourColumnIndex].Value.ToString() //Example1:yourRowIndex=dataGridView1.CurrentRow.Index (from selectedRow ); dataGrid1.Rows[dataGridView1.CurrentRow.Index].Cells[2].Value.ToString() //Example2:yourRowIndex=3,yourColumnIndex=2 (select by programmatically ) dataGrid1.Rows[3].Cells[2].Value.ToString()


Para obtener un valor de celda basado en la selección de fila completa:

if (dataGridView1.SelectedRows.Count > 0) { foreach (DataGridViewRow row in dataGridView1.Rows) { TextBox1.Text = row.Cells["ColumnName"].Value.ToString(); } } else { MessageBox.Show("Please select item!"); } }


Puedes hacer así ...

private void datagridview1_SelectionChanged(object sender, EventArgs e) { if (datagridview1.SelectedCells.Count > 0) { int selectedrowindex = datagridview1.SelectedCells[0].RowIndex; DataGridViewRow selectedRow = datagridview1.Rows[selectedrowindex]; string a = Convert.ToString(selectedRow.Cells["you have to mention you cell corresponding column name"].Value); } }


Solo quiero señalar, puedes usar .selectedindex para que sea un poco más limpio

string value = gridview.Rows[gridview.SelectedIndex].Cells[1].Text.ToString();


Use Cell Click ya que otros métodos mencionados se activarán al vincular los datos, no son útiles si quiere el valor seleccionado, luego el formulario se cierra.

private void dgvProducts_CellClick(object sender, DataGridViewCellEventArgs e) { if (dgvProducts.SelectedCells.Count > 0) // Checking to see if any cell is selected { int mSelectedRowIndex = dgvProducts.SelectedCells[0].RowIndex; DataGridViewRow mSelectedRow = dgvProducts.Rows[mSelectedRowIndex]; string mCatagoryName = Convert.ToString(mSelectedRow.Cells[1].Value); SomeOtherMethod(mProductName); // Passing the name to where ever you need it this.close(); } }


Para aquellos que no pudieron activar el evento click, pueden usar el siguiente código

public Form1() { InitializeComponent(); this.dataGridView1.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellClick); }


string value = dataGridVeiw1.CurrentRow.Cells[1].Value.ToString();


El código más simple es DataGridView1.SelectedCells(column_index).Value

Como ejemplo, para la primera celda seleccionada:

DataGridView1.SelectedCells(0).Value


esto me da el valor de texto de la celda exacta en la vista de cuadrícula de datos

private void dataGridView_SelectionChanged(object sender, EventArgs e) { label1.Text = dataGridView.CurrentRow.Cells[#].Value.ToString(); }

Puedes verlo en la etiqueta y cambiar # por el índice de la celda exacta que quieras


Si desea obtener el contenido de la celda seleccionada; necesitas el índice de fila y celda.

int rowindex = dataGridView1.CurrentCell.RowIndex; int columnindex = dataGridView1.CurrentCell.ColumnIndex; dataGridView1.Rows[rowindex].Cells[columnindex].Value.ToString();