2011-09-01 4 views
4

J'ai un problème avec le contrôle UltraGrid d'Infragistics. J'ai créé un ultracombobox avec quelques valeurs en elle:Infragistics Ultragrid - Combobox comme colonne

UltraCombo ultraComboPaneel = new UltraCombo(); 
     ultraComboPaneel.DataSource = articleList; 
     ultraComboPaneel.ValueMember = "ArticleID"; 
     ultraComboPaneel.DisplayMember = "Name"; 

Maintenant, j'ai un UltraGrid, et je veux mettre le ultraCombo dans une cellule que je peux choisir l'un des éléments de la ultracombo en tant que valeur de la cellule . Je l'ai essayé à la fois dans le code et dans le designer ultragride mais je n'arrive pas à trouver un moyen de le faire.

Vous avez une idée? Plus d'informations peuvent être fournies si nécessaire

Edit:

J'ai trouvé quelque chose comme

UltraGridColumn ugc = ultraGridTypePaneel.DisplayLayout.Bands[0].Columns.Add("combo"); 
ultraGridTypePaneel.DisplayLayout.Bands[0].Columns["combo"].EditorControl = ultraComboPaneel; 

Je sens que je suis sur la bonne voie, mais il est toujours pas afficher sur l'écran ...

Répondre

3

L'UltraCombo offre de nombreuses fonctionnalités. Si tout ce dont vous avez besoin est la possibilité de choisir un élément dans une liste, vous trouverez peut-être que la solution ValueLists de la grille offre une meilleure solution.

est ici un code pour vous aider à démarrer:

private void myGrid_InitializeLayout(object sender, Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs e) 
    { 
     const string colorValueList = @"ColorValueList"; 

     if (!e.Layout.ValueLists.Exists(colorValueList)) 
     { 
      ValueList svl = e.Layout.ValueLists.Add(colorValueList); 
      svl.ValueListItems.Add(1, "Red"); 
      svl.ValueListItems.Add(2, "Green"); 
      svl.ValueListItems.Add(3, "Blue"); 
     } 
     e.Layout.Bands[0].Columns["Color"].ValueList = e.Layout.ValueLists[colorValueList]; 
    } 
1

J'utilise l'Ultra Dropdown à la place.

UDD dim Comme UltraDropDown

UDD = New UltraDropDown

With udd 
     'add data binding or value list items here 
    End With 


    Me.ultragrid.DisplayLayout.Bands(0).Columns("Column Name").ValueList = udd 

La clé est la dernière ligne qui attribue la "Liste des valeurs" de la colonne de la grille ultra au contrôle liste déroulante.

3

Vous pouvez trouver sur le lien ci-dessous quelques approches que vous pouvez utiliser pour mettre un menu déroulant dans une cellule UltraGrid:

http://devcenter.infragistics.com/Support/KnowledgeBaseArticle.aspx?ArticleID=7841

Pour en revenir à l'extrait de code actuel - vous y êtes presque:

d'abord, vous devez définir le contexte de liaison de votre UltraCombo au BindingContext de la forme la votre UltraCombo sera utilisé comme:
ultraComboPaneel.BindingContext = this.BindingContext;

Veuillez noter que le réglage du contexte de binging doit avoir lieu avant de définir votre contrôle sur EditorControl. Une autre chose que j'ai remarquée est que la propriété est actuellement modifiée en EditorComponent donc je crois que vous utilisez une version plus ancienne des composants Infragistics. Cependant, vous devriez toujours être en mesure d'utiliser la même approche. J'ai créé l'extrait de code petit montrant le dessus avec le code:

public partial class Form1 : Form 
{ 
    UltraCombo uc; 
    public Form1() 
    { 
     InitializeComponent(); 
     DataTable dt = new DataTable(); 
     dt.Columns.Add("Int", typeof(int)); 
     dt.Rows.Add(1); 
     dt.Rows.Add(1); 
     dt.Rows.Add(1); 

     DataTable dtt = new DataTable(); 
     dtt.Columns.Add("Int", typeof(int)); 
     dtt.Rows.Add(2); 
     dtt.Rows.Add(2); 
     dtt.Rows.Add(2); 

     uc = new UltraCombo(); 
     uc.BindingContext = this.BindingContext; 
     uc.DataSource = dtt; 

     ultraGrid1.DataSource = dt.DefaultView; 
    } 

    private void ultraGrid1_InitializeLayout(object sender, Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs e) 
    { 
     e.Layout.Bands[0].Columns[0].EditorComponent = uc; 
    } 
} 

Espérons que ceci aide.

Questions connexes