Infragistics UltraDropDown 不显示

Infragistics UltraDropDown not displaying

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

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

到目前为止我有两个问题:

首先是,当我显示下拉菜单时,我得到一个 table,其中一行表示 Key,一个枚举键列表和一行表示 Value 以及我实际想要显示的字符串列表。如何确保枚举键绑定到下拉选择,同时确保显示字符串值?

其次是性能。我已经阅读了 this 的第三部分,据我所知,我没有偶然发现列出的任何要点,但加载时间真的很慢,而且即使在表单之后,应用程序也非常滞后加载。

如能帮助解决这两个问题,我们将不胜感激。

我会努力避免在您的代码中使用 UltraDropDown。
我只想使用列的 ValueList 属性。

假设你的 MyDict 是这个 class

的一个实例
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

现在,您可以在网格的 InitializeLayout 事件中编写

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)