4

我对 Infragistics 的 UltraGrid 控件有疑问。我创建了一个包含一些值的超组合框:

 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;

我觉得我在正确的方式,但它仍然没有显示在屏幕上......

4

3 回答 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];
    }
于 2011-09-01T16:35:46.197 回答
3

您可以在下面的链接中找到一些可用于将 DropDown 放入 UltraGrid 单元格的方法:

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

回到你当前的代码片段——你快到了:

首先,您应该将 UltraCombo 的绑定上下文设置为 UltraCombo 将使用的表单的 BindingContext,如下所示:
ultraComboPaneel.BindingContext = this.BindingContext;

请注意,设置 binging 上下文应在将控件设置为 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;
    }
}

希望这可以帮助。

于 2011-11-10T10:06:09.883 回答
1

我改用 Ultra Dropdown。

暗淡的 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

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

于 2011-09-01T17:17:31.043 回答