下拉列表应仅显示显示成员

时间:2013-05-31 09:32:25

标签: vb.net combobox infragistics

我已将一个集合绑定到ultracombo,并且我已指定value memberdisplay member。这些集合有很多列,现在我只需在显示中显示一列,将一列分配给value member。现在我看到集合中的所有columns都显示为multicolumn

//代码

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

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:7)

在C#中,您可以尝试以下方法: - >添加" ultraCombo1"当你超级组合...在表单加载时尝试以下代码:

    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;                                   

    }

您的ultracombo将使用&#34; ID&#34;的值成员填充和'#34;名称&#34;只有..

答案 1 :(得分:2)

UltraCombo将自动生成所有列。您可以在设置数据源之前添加所需的列,并将cboUltra.DisplayLayout.NewColumnLoadStyle设置为NewColumnLoadStyle.Hide,或者您可以通过在InitializeLayout事件中循环遍历它们来隐藏除创建它们之外的所有列。将它们全部设置为隐藏,除了你想要的那个。

您还可以查看UltraComboEditor,因为它只显示一列。这是否适用于您的选项将取决于您在下拉列表中需要哪些功能。

答案 2 :(得分:0)

以下是一种扩展方法,可隐藏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