2011-12-26 69 views
5

Tengo una cuadrícula de datos/vista de cuadrícula. Estoy poblando la cuadrícula con 10 filas inicialmente. En un botón, haga clic en cada vez, sigo agregando 10 filas a la cuadrícula de datos/vista de cuadrícula. Ahora quiero establecer el foco en la última fila cada vez que se llena la grilla. Puedo obtener el índice de esa fila, pero no puedo establecer el foco en esa fila en particular.¿Cómo establecer el foco en una fila en particular en una cuadrícula de datos/vista de cuadrícula?

¿Alguno de ustedes tiene alguna idea de cómo hacerlo en C#?

Respuesta

10

Prueba este

dataGridView1.ClearSelection(); 
int nRowIndex = dataGridView1.Rows.Count - 1; 

dataGridView1.Rows[nRowIndex].Selected = true; 
dataGridView1.Rows[nRowIndex].Cells[0].Selected = true; 
+0

amigo, estoy configurando el foco en el clic del botón que event.And no puedo encontrar ninguna propiedad para gridview como 'fila' and'.Selected'.Please dime cómo puedo conseguirlos .. – Sukanya

+0

Comprobar ahora después de la actualización –

+1

Gracias. Intenté su código pero está dando error ya que "GridviewRow no contiene una definición para 'Seleccionado' y ningún método de extensión 'Seleccionado' acepta un primer argumento de tipo System.Web.UI.WebControls. Se pudo encontrar GridViewRow ". ¿Me falta alguna directiva o referencia de ensamblaje? – Sukanya

1

Prueba esto ...

DataGridViewRow rowToSelect = this.dgvJobList.CurrentRow; 

rowToSelect.Selected = true; 



rowToSelect.Cells[0].Selected = true; 

this.dgvJobList.CurrentCell = rowToSelect.Cells[0]; 

this.dgvJobList.BeginEdit(true); 
+0

No obtengo ninguna propiedad como .CurrentRow para gridview. Por favor, ayuda .. – Sukanya

4

Para WinForms DataGridView:

myDataGridView.CurrentCell = myDataGridView.Rows[theRowIndex].Cells[0]; 

Para formularios Web GridView, utilice la propiedad SelectedIndex

myGridView.SelectedIndex = theRowIndex; 
+0

No hay ninguna propiedad como 'CurrentCell' para gridview .. – Sukanya

+0

@Sukanya Hay para [DataGridView] (http://msdn.microsoft.com /en-us/library/system.windows.forms.datagridview.currentcell.aspx). ¿Estás trabajando con WebForm GridView? Si es así, por favor marque esto en su pregunta. – akoso

+0

@Sukanya eche un vistazo a mi edición – akoso

0

Pruebe esto, estoy bien con el siguiente fragmento de script en Extjs 4.2.0.

//currentIndex is the index of grid row 
var rowElement = this.getView().getRecord(currentIndex); 
this.getView().focusRow(rowElement); 
0

Prueba de esto, es un trabajo para mí

public static void ItemSetFocus(DataGrid Dg, int SelIndex) 
    { 
     if (Dg.Items.Count >= 1 && SelIndex < Dg.Items.Count) 
     { 
      Dg.ScrollIntoView(Dg.Items.GetItemAt(SelIndex)); 
      Dg.SelectionMode = DataGridSelectionMode.Single; 
      Dg.SelectionUnit = DataGridSelectionUnit.FullRow; 
      Dg.SelectedIndex = SelIndex; 
      DataGridRow row = (DataGridRow)Dg.ItemContainerGenerator.ContainerFromIndex(SelIndex); 
       row.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next)); 
     } 
    } 
0

Este post ha sido una bendición de Dios. Estoy usando VB en Visual Studio 2017 y solo necesitaba ir al final de un DATAGRID para permitirle al usuario ingresar datos. Al estudiar estas respuestas, se me ocurrió esta solución y pensé que otros podrían encontrarla útil.

Private Sub AddBUTTON_Click(sender As Object, e As RoutedEventArgs) Handles 
AddBUTTON.Click 
     ' Go to bottom to allow user to add item in last row 
     DataGrid.Focus() 
     DataGrid.UnselectAll() 
     DataGrid.SelectedIndex = 0 
     DataGrid.ScrollIntoView(DataGrid.SelectedItem) 
     Dim endofitems As Integer = DataGrid.Items.Count   
     DataGrid.ScrollIntoView(DataGrid.Items.GetItemAt(endofitems - 1)) 
    End Sub 
Cuestiones relacionadas