【问题标题】:Dropdown should show only the display member下拉菜单应仅显示显示成员
【发布时间】:2013-05-31 09:32:25
【问题描述】:

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

//代码

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

我怎样才能做到这一点?

【问题讨论】:

    标签: vb.net combobox infragistics


    【解决方案1】:

    在 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 将仅填充“ID”的值成员和“名称”的显示成员..

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 你能在 InitializeLayout 事件中展示任何用于循环它们的示例代码吗?
      【解决方案3】:

      这是一个扩展方法,它将隐藏除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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多