代码之家  ›  专栏  ›  技术社区  ›  Woody1193 Nimmi Rashinika

Infragistics UltraDropDown未显示

  •  0
  • Woody1193 Nimmi Rashinika  · 技术社区  · 6 年前

    我有一个infragistics网格控件,它有两列:一列是显示特定设置名称的字符串,另一列是包含与之关联的名称的可用值的下拉菜单。所有值都相同。在实例化下拉列表并将其添加到控件之后,我在设计器中添加了下拉列表,如下所示:

    Me.settingLevelDrpDown.DataSource = MyDict.ToList()
    Me.settingLevelDrpDown.ValueMember = "Key"
    Me.settingLevelDrpDown.DisplayMember = "Value"
    

    在这种情况下, MyDict 是一个 Dictionary(Of MyEnum, String) 哪里 MyEnum 只是一个枚举。显示这些的代码是:

    settingLevelDrpDown.Visible = True
    settingLevels.DisplayLayout.Bands(0).Columns(1).ValueList = settingLevelDrpDown
    

    第一个是,当我显示一个下拉列表时,我得到一个表,其中一行是 Key 以及枚举键列表和 Value

    第二是表现。我读了第三节 this 而且,据我所知,我还没有偶然发现列出的任何一点,但是加载时间非常慢,即使在表单加载之后,应用程序也会严重滞后。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Steve    6 年前

    我会努力避免在你的代码中出现超下拉。

    假设你的 麦迪克特

    Dim myDict As Dictionary(Of Int32, String) = New Dictionary(Of Int32, String)
    

    我会用这样的方法把它转换成一个ValueList

    Public Function ToValueList(settings As Dictionary(Of Int32, String)) As ValueList
        Dim result As ValueList = New ValueList()
        For Each kvp As KeyValuePair(Of Int32, String)  In settings
             result.ValueListItems.Add(kvp.Key, kvp.Value)
        Next
        Return result
    End Function
    

    Dim b as UltraGridBand = settingLevels.DisplayLayout.Bands(0)
    
    ' Just to avoid the user typing something not expected
    ' Default is an editable DropDown 
    b.Columns(1).Style = ColumnStyle.DropDownList
    
    b.Columns(1).ValueList = ToValueList(MyDict)