显示整个数据表而不是指定列的下拉列表?
Drop down list showing whole DataTable instead of the specified column?
someForm.designer.cs
private Infragistics.Win.UltraWinGrid.UltraCombo cmb;
cmb.DisplayMember = "valueColumn";
cmb.ValueMember = "IDColumn";
someForm.cs
SomeDS.SomeDTDataTable temp = new SomeDS.SomeDTDataTable();
this.cmb.DataSource = temp;
this.cmb.DataBind();
this.dataGrid.DisplayLayout.Bands[0].Columns["someColumn"].EditorControl = this.cmb;
SomeDS.SomeDTDataTable
有多个列,现在每个 cmb
,而不是只显示 valueColumn
,它显示所有列?我可以知道哪一部分出了问题吗?
这是预期的行为。 UltraCombo 创建与您指定为 DataSource 的 DataTable 之一相匹配的布局。要隐藏除 valueColumn 之外的所有列,您可以处理组合的 InitializeLayout 并将所有其他列的 Hidden 设置为 true,如下所示:
this.cmb.InitializeLayout += Cmb_InitializeLayout;
private void Cmb_InitializeLayout(object sender, InitializeLayoutEventArgs e)
{
foreach(var col in e.Layout.Bands[0].Columns)
{
if(col.Header.Caption != "valueColumn")
{
col.Hidden = true;
}
}
}
public void AssignDropDown(DataTable dt)
{
//在UltraCombo中只显示DisplayMember
string[] fields = new string[]{ dt.Columns[0].ToString() };
ugReqLine.DisplayMember = dt.Columns[0].ToString();
ugReqLine.DataSource = dt;
ugReqLine.ValueMember = dt.Columns[1].ToString();
ugReqLine.SetColumnFilter(fields);
}
someForm.designer.cs
private Infragistics.Win.UltraWinGrid.UltraCombo cmb;
cmb.DisplayMember = "valueColumn";
cmb.ValueMember = "IDColumn";
someForm.cs
SomeDS.SomeDTDataTable temp = new SomeDS.SomeDTDataTable();
this.cmb.DataSource = temp;
this.cmb.DataBind();
this.dataGrid.DisplayLayout.Bands[0].Columns["someColumn"].EditorControl = this.cmb;
SomeDS.SomeDTDataTable
有多个列,现在每个 cmb
,而不是只显示 valueColumn
,它显示所有列?我可以知道哪一部分出了问题吗?
这是预期的行为。 UltraCombo 创建与您指定为 DataSource 的 DataTable 之一相匹配的布局。要隐藏除 valueColumn 之外的所有列,您可以处理组合的 InitializeLayout 并将所有其他列的 Hidden 设置为 true,如下所示:
this.cmb.InitializeLayout += Cmb_InitializeLayout;
private void Cmb_InitializeLayout(object sender, InitializeLayoutEventArgs e)
{
foreach(var col in e.Layout.Bands[0].Columns)
{
if(col.Header.Caption != "valueColumn")
{
col.Hidden = true;
}
}
}
public void AssignDropDown(DataTable dt) { //在UltraCombo中只显示DisplayMember
string[] fields = new string[]{ dt.Columns[0].ToString() };
ugReqLine.DisplayMember = dt.Columns[0].ToString();
ugReqLine.DataSource = dt;
ugReqLine.ValueMember = dt.Columns[1].ToString();
ugReqLine.SetColumnFilter(fields);
}