visual una ultima toda seleccionar pasar obtener numero net leer filas fila evento datos celda asp .net datagridview

.net - ultima - Haga clic con el botón derecho para seleccionar una fila de datagridview



seleccionar una fila de un datagridview asp net (6)

Lo bueno es agregar un menú en ese clic derecho, por ejemplo con opciones como "Ver información del cliente", "Verificar últimas facturas", "Agregar una entrada de registro a este cliente", etc.

solo necesita agregar un objeto ContextMenuStrip, agregar las entradas de menú y, en las propiedades de DataGridView, simplemente seleccione ContextMenuStrip.

Esto crearía un nuevo menú en la fila en la que el usuario hizo clic con todas las opciones, entonces todo lo que necesitas hacer es crear tu magia :)

recuerde que necesita el código JvR para obtener la fila en la que estaba el usuario, luego tome la celda que contiene la ID del cliente, por ejemplo, y pase esa información.

Espero que ayude a mejorar tu aplicación

http://img135.imageshack.us/img135/5246/picture1ku5.png

http://img72.imageshack.us/img72/6038/picture2lb8.png

¿Cómo se selecciona una fila de datagridview haciendo clic con el botón derecho?


Puede usar el código de JvR en el evento MouseDown de su DataGridView.


Subclase el DataGridView y cree un evento MouseDown para la grilla,

private void SubClassedGridView_MouseDown(object sender, MouseEventArgs e) { // Sets is so the right-mousedown will select a cell DataGridView.HitTestInfo hti = this.HitTest(e.X, e.Y); // Clear all the previously selected rows this.ClearSelection(); // Set as selected this.Rows[hti.RowIndex].Selected = true; }


// Clear all the previously selected rows foreach (DataGridViewRow row in yourDataGridView.Rows) { row.Selected = false; } // Get the selected Row DataGridView.HitTestInfo info = yourDataGridView.HitTest( e.X, e.Y ); // Set as selected yourDataGridView.Rows[info.RowIndex].Selected = true;


Haz que se comporte de manera similar al botón izquierdo del mouse? p.ej

private void dataGridView_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e) { if (e.Button == MouseButtons.Right) { dataGridView.CurrentCell = dataGridView[e.ColumnIndex, e.RowIndex]; } }


Tienes que hacer dos cosas:

  1. Borre todas las filas y seleccione la actual. i = e.RowIndex todas las filas y uso Bool Expression i = e.RowIndex para esto

  2. Si has hecho el Paso 1, todavía tienes una gran trampa:
    DataGridView1.CurrentRow no devuelve la fila seleccionada previamente (lo cual es bastante peligroso). Como CurrentRow es Readonly, tienes que hacer

    Me.CurrentCell = Me.Item(e.ColumnIndex, e.RowIndex)

    Protected Overrides Sub OnCellMouseDown( ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) MyBase.OnCellMouseDown(e) Select Case e.Button Case Windows.Forms.MouseButtons.Right If Me.Rows(e.RowIndex).Selected = False Then For i As Integer = 0 To Me.RowCount - 1 SetSelectedRowCore(i, i = e.RowIndex) Next End If Me.CurrentCell = Me.Item(e.ColumnIndex, e.RowIndex) End Select End Sub