inffragistics超网格-组合框作为列
本文关键字:组合 网格 inffragistics | 更新日期: 2023-09-27 18:07:17
我对inffragistics的超网格控制有一个问题。我已经创建了一个超组合框,其中有几个值:
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;
我觉得我是在正确的方式,但它仍然没有显示在屏幕上…
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];
}
您可以在下面的链接中找到一些您可以使用的将下拉菜单放入UltraGrid单元格的方法:
http://devcenter.infragistics.com/Support/KnowledgeBaseArticle.aspx?ArticleID=7841回到你当前的代码片段-你几乎就在那里了:
首先,你应该将你的UltraCombo的绑定上下文设置为你的UltraCombo将被使用的表单的binding context,如下所示:ultraComboPaneel.BindingContext = this.BindingContext;
请注意,设置绑定上下文应该在将控件设置为EditorControl之前进行。我注意到的另一件事是,该属性目前已更改为EditorComponent,因此我相信您使用的是较旧版本的inffragistics组件。但是,您应该仍然能够使用相同的方法。我创建了一个小代码片段,显示上面的代码:
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;
}
}
我用Ultra下拉菜单代替。
add = New UltraDropDown
With udd
'add data binding or value list items here
End With
Me.ultragrid.DisplayLayout.Bands(0).Columns("Column Name").ValueList = udd
键是将超网格列的"Value List"分配给dropdown控件的最后一行。