Infragistics Ultragrid - Combobox as column

4

我遇到了Infragistics的UltraGrid控件的问题。我创建了一个带有几个值的ultracombobox:

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

现在我有一个UltraGrid,我想把ultraCombo放在单元格中,这样我就可以选择ultracombo的其中一项作为单元格值。我尝试了在代码中和ultragrid设计器中都试过,但似乎找不到方法来实现它。
你们有什么建议吗?如果需要更多信息可以提供。
编辑:
我发现了一些类似的东西。
UltraGridColumn ugc = ultraGridTypePaneel.DisplayLayout.Bands[0].Columns.Add("combo");
ultraGridTypePaneel.DisplayLayout.Bands[0].Columns["combo"].EditorControl = ultraComboPaneel;

我感觉我走在正确的道路上,但它仍然没有显示在屏幕上...

3个回答

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

3
您可以在下面的链接中找到一些方法,可以将下拉菜单放入UltraGrid单元格中:

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

回到您当前的代码片段 - 您已经接近成功:

首先,您应该将UltraCombo的绑定上下文设置为使用UltraCombo的窗体的BindingContext,例如:
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;
    }
}

希望这有所帮助。

1

我使用Ultra Dropdown。

Dim udd As 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

关键在于最后一行,将超级网格列的“值列表”分配给下拉控件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接