2010-09-01 14 views
0

J'ai un GridView qui obtient GridColumns ajouté dynamiquement. Au moment du design, je ne sais pas combien de colonnes la vue va avoir.Existe-t-il un moyen pour GridColumns d'hériter d'un ensemble de paramètres d'apparence par défaut de leur GridView parent?

Ce que je fais actuellement pour formater chacune de ces colonnes ajoutées dynamiquement, est le format eux dans un foreach après la source de données de la grille a été fixé:

foreach (GridColumn gridColumn in gridView.Columns) 
     { 
      gridColumn.AppearanceCell.Options.UseTextOptions = true; 
      gridColumn.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; 
      gridColumn.AppearanceHeader.Options.UseTextOptions = true; 
      gridColumn.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near; 
      gridColumn.AppearanceHeader.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap; 
      gridColumn.OptionsColumn.AllowGroup = DevExpress.Utils.DefaultBoolean.False; 
      gridColumn.OptionsColumn.AllowIncrementalSearch = false; 
      gridColumn.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.False; 
      gridColumn.OptionsColumn.AllowMove = false; 
      gridColumn.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.False; 
      gridColumn.OptionsColumn.AllowEdit = false; 
     } 

Le problème est que je peux avoir un grand nombre de colonnes et ce foreach ralentit mon dessin initial. N'y a-t-il pas moyen de décider, pour GridView, de l'apparence de chacune de ses colonnes, qu'elles aient été ajoutées ou non?

+0

En attendant, j'ai découvert qu'il est très efficace d'appeler SaveLayoutToXml sur GridView avant de créer les colonnes dynamiques, puis de restaurer RestoreLayoutFromXml en utilisant ce même fichier. N'y at-il pas un moyen de sauvegarder et de restaurer la mise en page sans avoir à utiliser un fichier (en d'autres termes, de la mémoire)? – Corpsekicker

Répondre

0

Changer votre code comme indiqué ci-dessous:

gridControl.BeginUpdate(); 
try { 
    // your code to change column appearances 
} 
finally { 
    gridControl.EndUpdate(); 
} 

Cela permettra d'améliorer considérablement les performances de la grille :)

+0

Merci, cela augmente le chargement d'environ 5 fois, mais je pense quand même qu'il serait beaucoup plus logique de décider comment les colonnes d'une vue devraient ressembler et se comporter de manière modélisée. – Corpsekicker

0

En ce qui concerne votre commentaire (que je considère être une demande pour plus d'informations), vous pouvez utiliser la méthode RestoreLayoutFromStream() et SaveLayoutToStream() pour enregistrer vos paramètres de la même manière que vous les enregistrez au format XML.

Il suffit de créer une propriété Stream pour votre classe et de diriger DevExpress pour enregistrer ce flux sur cet objet.