Dropdown should show only the display member

前端 未结 3 1523
情歌与酒
情歌与酒 2021-01-19 08:43

I have bound a collection to ultracombo and I have specified the value member and display member. The collections have many columns, N

相关标签:
3条回答
  • 2021-01-19 08:50

    The UltraCombo will generate all of the columns automatically. You could either add the column you want before setting the data source and set cboUltra.DisplayLayout.NewColumnLoadStyle to NewColumnLoadStyle.Hide or you could hide all of the columns except the one you want after they are created by looping through them in the InitializeLayout event and setting them all to hidden except the one that you want.

    You could also look at the UltraComboEditor as that only displays a single column. Whether this is an options for you will depend on what features you need in your drop down.

    0 讨论(0)
  • 2021-01-19 08:51

    In C# you can try the following: --> Add "ultraCombo1" as you ultra combo... on form load try following code:

        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;                                   
    
        }
    

    Your ultracombo will be populated with value member of "ID" and displaymember of "Name" only..

    0 讨论(0)
  • 2021-01-19 08:57

    Here is an extension method that will hide all columns besides the DisplayMember column.

    <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
    
    0 讨论(0)
提交回复
热议问题