Vb.net 下拉列表应仅显示显示成员

Vb.net 下拉列表应仅显示显示成员,vb.net,combobox,infragistics,Vb.net,Combobox,Infragistics,我已将集合绑定到ultracombo,并指定了值成员和显示成员。集合有许多列,现在我必须在显示中只显示其中一列,并将一列指定给值成员。现在我看到集合中的所有列都显示为multicolumn //代码 cboUltra.ValueMember = "LookupValue" cboUltra.DisplayMember = "LookupValueDescription" cboUltra.DataSource = LoadLookupDetails(Field.LookUpCode) U

我已将集合绑定到
ultracombo
,并指定了
值成员
显示成员
。集合有许多列,现在我必须在显示中只显示其中一列,并将一列指定给
值成员
。现在我看到集合中的所有
列都显示为
multicolumn

//代码

 cboUltra.ValueMember = "LookupValue"
 cboUltra.DisplayMember = "LookupValueDescription"
 cboUltra.DataSource = LoadLookupDetails(Field.LookUpCode)
 UltraGridRow.Cells("FieldValue").ValueList = cboUltra

如何实现这一点?

超级组合将自动生成所有列。您可以在设置数据源之前添加所需的列,并将cboUltra.DisplayLayout.NewColumnLoadStyle设置为NewColumnLoadStyle.Hide,也可以通过在InitializeLayout事件中循环浏览所需列并将其设置为hidden(隐藏所需列除外)来隐藏所有列需要

您还可以查看仅显示单个列的as。这是否是一个选项取决于您在下拉列表中需要哪些功能。

在C中,您可以尝试以下操作: -->添加“超级组合1”作为您的超级组合。。。加载表单时,请尝试以下代码:

    private void Form1_Load(object sender, EventArgs e)
    {
        // Fill data in ultracombo datasource
        DataTable dtt = new DataTable();
        dtt.Columns.Add("ID", typeof(int));
        dtt.Columns.Add("Name", typeof(string));
        dtt.Columns.Add("Age", typeof(int));
        dtt.Columns.Add("Address", typeof(string));
        dtt.Columns.Add("Sex", typeof(string));
        dtt.Rows.Add(new object[] {1,"Name1",20,"Address 1","Male"});
        dtt.Rows.Add(new object[] { 2, "Name2", 21, "Address 2", "Male" });
        dtt.Rows.Add(new object[] { 3, "Name3", 22, "Address 3", "Female" });
        dtt.Rows.Add(new object[] { 4, "Name4", 23, "Address 4", "Male" });
        dtt.Rows.Add(new object[] { 5, "Name5", 24, "Address 5", "Female" });
        ultraCombo1.DataSource = dtt;
        ultraCombo1.DataBind();
        //---------------------------------

        // hide all but show "ID" and "Name" only

        ultraCombo1.ValueMember = "ID";
        ultraCombo1.DisplayMember = "Name";
        for (int i = 0; i < ultraCombo1.Rows.Band.Columns.Count; i++)
        {
            ultraCombo1.Rows.Band.Columns[i].Hidden = true;
        }
        ultraCombo1.Rows.Band.Columns["ID"].Hidden = false;
        ultraCombo1.Rows.Band.Columns["Name"].Hidden =  false;                                   

    }
private void Form1\u加载(对象发送方,事件参数e)
{
//在ultracombo数据源中填充数据
DataTable dtt=新的DataTable();
添加(“ID”,typeof(int));
添加(“名称”,类型(字符串));
添加(“年龄”,类型(int));
添加(“地址”,类型(字符串));
添加(“性别”,typeof(字符串));
Add(新对象[]{1,“Name1”,20,“Address 1”,“Male”});
Add(新对象[]{2,“Name2”,21,“Address 2”,“Male”});
Add(新对象[]{3,“Name3”,22,“Address 3”,“Female”});
Add(新对象[]{4,“Name4”,23,“Address 4”,“Male”});
Add(新对象[]{5,“Name5”,24,“Address 5”,“Female”});
ultraCombo1.DataSource=dtt;
ultraCombo1.DataBind();
//---------------------------------
//隐藏所有内容,但仅显示“ID”和“名称”
ultraCombo1.ValueMember=“ID”;
ultraCombo1.DisplayMember=“Name”;
for(int i=0;i

您的ultracombo将被“ID”的值成员和“Name”的displaymember填充。

这里有一个扩展方法,它将隐藏除
displaymember
列之外的所有列

<Extension()>
Public Sub ShowOnlyDisplayMemberColumn(this As UltraCombo)
    Dim columnName As String = this.DisplayMember
    For Each band As UltraGridBand In this.DisplayLayout.Bands
        For i As Integer = 0 To band.Columns.Count - 1
            Dim column As UltraGridColumn = band.Columns(i)
            If (column.Key = columnName) Then
                column.Hidden = False
                column.Width = this.Width
            Else
                column.Hidden = True
            End If
        Next
    Next
End Sub

Public Sub ShowOnlyDisplayMemberColumn(此为UltraCombo)
Dim columnName As String=this.DisplayMember
在this.DisplayLayout.Bands中将每个频带作为UltraGridBand
对于i,整数=0到band.Columns.Count-1
作为UltraGridColumn的Dim列=频带列(i)
如果(column.Key=columnName),则
column.Hidden=False
column.Width=此.Width
其他的
column.Hidden=True
如果结束
下一个
下一个
端接头

能否在InitializeLayout事件中显示循环的示例代码?