2009-03-12 13 views
15

Ho messo un UltraGrid su un controllo utente di WinForms. Ho modificato alcune impostazioni in modo da poter utilizzare la griglia come tabella di selezione a più righe di sola lettura. Ma c'è un problema: per impostazione predefinita la prima riga sembra essere selezionata.Infragistics UltraGrid: come rimuovere la selezione predefinita della prima riga

Ma la proprietà Selected.Rows è vuota e anche la proprietà ActiveRow è null.

Quindi la riga sembra essere selezionata, ma in realtà non lo è, rendendo impossibile rimuovere la selezione.

Sono sicuro che ci deve essere un'impostazione nascosta da qualche parte su UltraGrid per controllare questo comportamento. E se questo non è il caso, allora forse c'è una soluzione?

Grazie.

risposta

21

Dopo un po 'di ricerca ho trovato una soluzione, che ho intenzione di condividere con tutti voi:

myUltraGrid.DisplayLayout.Override.ActiveCellAppearance.Reset(); 
myUltraGrid.DisplayLayout.Override.ActiveRowAppearance.Reset(); 
+0

Non ha funzionato per me o Gianni. E l'approccio di Gianni spazza via i dati di ListObject. Puoi offrire qualche aiuto perché potrebbe non aver funzionato? Ho preso una semplice griglia con le proprietà predefinite e l'ho vincolata e poi xportato le 2 linee raccomandate. Nessun cambiamento. – ChadD

+0

Questo ha funzionato per me. Per quelli di voi con un problema simile, tenete presente che ci sono due proprietà che una riga può avere: "Selezionata" e "Attiva". Possono essere selezionate zero o più righe, ma una e una sola riga è attiva. Sfortunatamente, sia una riga selezionata che la riga attiva sono evidenziate (per impostazione predefinita) allo stesso modo. La riga Attivo è indicata anche da un triangolo nell'intestazione di riga (se sono attivate le intestazioni di riga). La chiamata ActiveRowAppearance.Reset() indica a UltraGrid di non evidenziare la riga attiva. Spero che questo ti aiuti. – AlfredBr

3

ho exactely lo stesso problema che aveva, ma la soluzione di Gerrie Schenck non funzionano per me . Ho usato questo trucco: MyUltraGrid.ActiveRow = MyUltraGrid.Rows [0]; MyUltraGrid.ActiveRow = null;

+0

Elimina i dati ListObject per la riga 0. – ChadD

1

In qualche modo nessuna delle soluzioni sopra elencate ha funzionato per me. Nel mio caso volevo semplicemente che l'attivazione/selezione non si verificasse affatto. Quindi ho fatto quanto segue Potrebbe non essere la soluzione migliore, ma funziona.

private void LayoutVisulizerUltraGrid_AfterRowActivate(object sender, EventArgs e) 
    { 
     LayoutVisulizerUltraGrid.ActiveRow = null; 
    } 
3

provare questo:

this.ultraGrid1.SyncWithCurrencyManager = false; 
this.ultraGrid1.DisplayLayout.Override.RowSelectors=DefaultableBoolean.False; 
+1

Grazie. Questo mi stava facendo impazzire. – Keith

+0

Grazie, wow, questo è così oscuro. – Mangist

3

Questo mi ha aiutato nel sopprimere il "active" di una griglia:

grid.DisplayLayout.Override.ActiveAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False; 

Se anche non si vuole una riga da marcare come selezionato, devi fare lo stesso per "Aspetto selezionato":

grid.DisplayLayout.Override.SelectedAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False; 
0

Disabilitare completamente la riga selezionata, quindi impostare ActiveRow su null dovrebbe cancellare la selezione.

grid.DisplayLayout.Override.SelectTypeRow = Infragistics.Win.UltraWinGrid.SelectType.None; 
2

È importante distinguere tra selezionato e attivo. La griglia non seleziona mai automaticamente alcuna riga Ciò che stai vedendo è ActiveRow, che viene visualizzato con un'evidenziazione proprio come le righe selezionate.

L'ActiveRow della griglia viene sincronizzato con il CurrencyManager, pertanto per impostazione predefinita la prima riga della griglia viene evidenziata. La reimpostazione di ActiveRowAppearance e ActiveCellAppearance rimuoverà l'evidenziazione predefinita da ActiveRow.

 this.ultraGrid1.DisplayLayout.Override.ActiveCellAppearance.Reset(); 
     this.ultraGrid1.DisplayLayout.Override.ActiveRowAppearance.Reset(); 

Ma è importante notare che questo non impedisce la riga di diventare la riga attiva, è solo che la griglia non è più evidenzia la riga attiva. Poiché la riga è ancora attiva (e non c'è modo di impedirlo) qualsiasi altra cosa che evidenzia la riga attiva evidenzierà ancora la riga. Ad esempio, se si carica un file di libreria di stili (* .isl) nell'applicazione che applica uno stile a ActiveRow, verrà comunque visualizzato.

Se si desidera disabilitare la comparsa riga attiva in maniera più approfondita, ignorando completamente tutte le impostazioni di proprietà e le impostazioni di libreria di stili, si può fare questo:

this.ultraGrid1.DisplayLayout.Override.ActiveAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False; 

notare che la struttura è stata aggiunta in v9. 2 e non esiste nelle versioni precedenti.