2011-12-26 3 views
5

Ho un datagrid/gridview. Sto popolando la griglia con 10 file inizialmente. Con un clic ogni volta, continuo ad aggiungere 10 righe al datagrid/gridview. Ora voglio impostare lo stato attivo sull'ultima riga ogni volta che la griglia viene popolata. Posso ottenere l'indice di quella riga, ma non posso focalizzare su quella particolare riga.Come impostare lo stato attivo su una particolare riga in un datagrid/gridview?

Qualcuno di voi ha qualche idea su come farlo in C#?

risposta

10

Prova questa

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

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

Amico, sto impostando la messa a fuoco in click che del pulsante event.And Non riesco a trovare alcuna proprietà per il GridView come 'Row' and'.Selected'.Please dimmi come posso ottenere .. – Sukanya

+0

Controlla ora dopo l'aggiornamento –

+1

Grazie. Ho provato il tuo codice ma dà errore poiché "GridviewRow non contiene una definizione per" Selezionato "e nessun metodo di estensione" Selezionato "accetta un primo argomento di tipo System.Web.UI.WebControls. GridViewRow potrebbe essere trovato ". Mi manca qualsiasi riferimento di direttiva o assembly? – Sukanya

1

Prova questo ...

DataGridViewRow rowToSelect = this.dgvJobList.CurrentRow; 

rowToSelect.Selected = true; 



rowToSelect.Cells[0].Selected = true; 

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

this.dgvJobList.BeginEdit(true); 
+0

Non ricevo alcuna proprietà come .CurrentRow per gridview.Please help .. – Sukanya

4

Per WinForms DataGridView:

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

Per WebForms GridView, utilizzare la proprietà SelectedIndex

myGridView.SelectedIndex = theRowIndex; 
+0

Non c'è alcuna proprietà come 'CurrentCell' per gridview .. – Sukanya

+0

@Sukanya Ci sono per [DataGridView] (http://msdn.microsoft.com /en-us/library/system.windows.forms.datagridview.currentcell.aspx). Stai lavorando con WebForm GridView? Se sì, segnalo nella tua domanda. – akoso

+0

@Sukanya dai un'occhiata al mio edit – akoso

0

Prova questo, sto lavorando bene con snippet di script di sotto in Extjs 4.2.0.

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

Prova questo, è lavoro per me

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

Questo post è stato un dio inviare. Sto usando VB in Visual Studio 2017 e ho solo bisogno di andare in fondo a un DATAGRID per consentire all'utente di inserire i dati. Studiando queste risposte ho trovato questa soluzione e ho pensato che gli altri potessero trovare utile.

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