2009-03-12 7 views
15

J'ai mis un UltraGrid sur un contrôle utilisateur WinForms. J'ai modifié certains paramètres afin que je puisse utiliser la grille comme une table de sélection à plusieurs lignes en lecture seule. Mais il y a un problème: par défaut, la première ligne semble être sélectionnée.Infragistics UltraGrid: comment supprimer la sélection par défaut de la première ligne

Mais la propriété Selected.Rows est vide, et la propriété ActiveRow est null.

La ligne semble être sélectionnée, mais ce n'est pas le cas, ce qui rend impossible la suppression de la sélection.

Je suis sûr qu'il doit y avoir un paramètre caché quelque part sur l'UltraGrid pour contrôler ce comportement. Et si ce n'est pas le cas alors peut-être une solution de contournement?

Merci.

Répondre

21

Après quelques recherches, j'ai trouvé une solution, que je vais partager avec vous tous:

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

Ne fonctionnait pas pour moi ou Gianni. Et l'approche de Gianni balaie les données ListObject. Pouvez-vous offrir de l'aide pourquoi cela n'a peut-être pas fonctionné? J'ai pris une grille simple avec les propriétés par défaut et je l'ai liée et j'ai alors déduit les 2 lignes recommandées. Pas de changement. – ChadD

+0

Cela a fonctionné pour moi. Pour ceux d'entre vous qui ont un problème similaire, gardez à l'esprit qu'il y a deux propriétés qu'une ligne peut avoir: 'Selected' et 'Active'. Zéro ou plusieurs lignes peuvent être sélectionnées, mais une et une seule ligne est active. Malheureusement, une ligne Selected et la ligne Active sont (par défaut) mises en surbrillance de la même manière. La ligne Active est également indiquée par un triangle dans l'en-tête de ligne (si vous avez activé les en-têtes de lignes). L'appel ActiveRowAppearance.Reset() indique à UltraGrid de ne pas mettre en surbrillance la ligne active. J'espère que cela t'aides. – AlfredBr

3

Je pétantes le même problème que vous aviez, mais la solution de Gerrie Schenck ne fonctionne pas pour moi . J'ai utilisé cette astuce: MyUltraGrid.ActiveRow = MyUltraGrid.Rows [0]; MyUltraGrid.ActiveRow = null;

+0

Cela balaie les données ListObject pour la ligne 0. – ChadD

1

D'une manière ou d'une autre, aucune des solutions énumérées ci-dessus n'a fonctionné pour moi. Dans mon cas, je voulais simplement que l'activation/sélection ne se produise pas du tout. J'ai donc fait ce qui suit. Ce n'est peut-être pas la meilleure solution, mais cela fonctionne.

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

essayez ceci:

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

Merci. Cela me rendait fou. – Keith

+0

Merci, wow c'est si obscur. – Mangist

3

Cela m'a aidé à supprimer la "Apparence active" d'une grille:

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

Si vous ne voulez pas de ligne à marquer comme sélectionné, vous devez faire la même chose pour "Apparence sélectionnée":

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

Désactivez complètement la ligne sélectionnée, puis définissez ActiveRow sur null pour effacer la sélection.

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

Il est important de faire la distinction entre Sélectionné et Actif. La grille ne sélectionne jamais les lignes automatiquement Ce que vous voyez est l'ActiveRow, qui s'affiche avec une surbrillance tout comme les lignes sélectionnées.

La fonction ActiveRow de la grille est synchronisée avec CurrencyManager. Par défaut, la première ligne de la grille apparaît en surbrillance. La réinitialisation de ActiveRowAppearance et ActiveCellAppearance supprimera la surbrillance par défaut de l'ActiveRow.

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

Mais il est important de noter que cela ne l'empêche pas la ligne de devenir la ligne active, juste que la grille ne met en évidence la ligne active. Puisque la ligne est toujours active (et il n'y a aucun moyen d'empêcher cela), tout ce qui met en évidence la ligne active mettra toujours la ligne en surbrillance. Par exemple, si vous chargez un fichier Bibliothèque de styles (* .isl) dans votre application qui applique un style à l'ActiveRow, il s'affichera toujours.

Si vous souhaitez désactiver l'apparence de ligne active d'une manière plus approfondie, en ignorant complètement tous les paramètres de propriété et paramètres de style bibliothèque, vous pouvez le faire:

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

Notez que cette propriété a été ajoutée en v9. 2 et n'existe pas dans les anciennes versions.