2011-09-01 74 views
4

我對Infragistics的UltraGrid控件有問題。我創建了一個帶有幾個值的ultracombobox它:Infragistics Ultragrid - Combobox列

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

現在我有一個的UltraGrid,我想把ultraCombo在單元格中,所以我可以選擇ultracombo的項目作爲一個單元格的值之一。我在代碼和超網格設計器中都嘗試了它,但我似乎無法找到一種方法來實現它。

你們有沒有想法?如果需要,可以提供更多的信息

編輯:

我發現像

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

我覺得我在正確的道路,但它仍然沒有顯示在屏幕上...

回答

3

UltraCombo提供了很多功能。如果您只需要從列表中選擇項目,則可能會發現網格ValueLists提供了更好的解決方案。

下面是一些代碼,讓你開始:

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

我用的是超下拉來代替。

暗淡UDD作爲UltraDropDown

UDD =新UltraDropDown

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


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

的關鍵是分配「值列表」超格列於下拉控制的最後一行。

3

你可以找到在下面,你可以用它來把下拉到的UltraGrid細胞的一些方法鏈接:

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

再回到當前的代碼片段 - 你幾乎有:

首先,你應該你UltraCombo結合上下文設置爲窗體的BindingContext的你UltraCombo將使用類似:
ultraComboPaneel.BindingContext = this.BindingContext;

請注意,在將控件設置爲EditorControl之前,應該先設置背景上下文。我注意到的另一件事是,該屬性當前更改爲EditorComponent,因此我相信您正在使用較早版本的Infragistics組件。但是,您仍應該可以使用相同的方法。我已經創建了一小段代碼顯示了上面的代碼:

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; 
    } 
} 

希望這有助於。

相關問題