2009-09-16 10 views
0

J'ai un ASPxGridView de DevExpress alimenté avec des données de ObjectDataSource. Mes objets de ligne de données exposent des propriétés telles que ParameterName, ParameterType et ParameterValue. ParameterValue est toujours un objet de type indiqué par la propriété ParameterType. En fait, j'utilise peu de types - Int32, Double, String ou Boolean. Lorsque j'affiche des valeurs dans une grille et que l'utilisateur clique sur "Modifier", une ParameterValue est toujours éditée avec TextBox. Est-il possible de changer d'éditeur pour cette colonne en fonction de ParameterType? Je veux que mes utilisateurs utilisent SpinEdit pour les entiers, case à cocher pour Boolean, etc.Modification dynamique d'un type d'éditeur pour ASPxGridView

En fait, c'est ainsi que les gens ont travaillé avec les grilles Delphi DevExpress - TdxGrid et TcxGrid (événement OnGetProperties). J'ai posé cette question dans le forum DevExpress, mais ne l'ai pas obtenu de réponse :(

Répondre

0

Vous pouvez créer un modèle sur cette colonne qui ferait l'interrupteur pour vous quelque chose comme:.

public class SwitchTemplate : ITemplate 
{ 
    public void Instantiate(Control container) 
    { 
     GridViewDataItemTemplateContainer cnt = (GridViewDataItemTemplateContainer) container; 
     switch(GetStringParameterTypeFromDataItem(cnt.DataItem)) 
     { 
     case "Int32": 
      container.Controls.Add(new ASPxSpinEdit() { ... }); 
      break; 

     case "DateTime": 
      container.Controls.Add(new ASPxDateEdit() { ... }); 
      break; 

     case "String": 
      container.Controls.Add(new ASPxTextBox() { ... }); 
      break; 

     ... 
     } 
    } 
} 

Ensuite, vous juste besoin de spécifier ce modèle comme le EditItemTemplate de la colonne:

myGrid.Columns["MyColumnName"].EditItemTemplate = new SwitchTemplate()