Как изменить колонку Infragistics Ultragrid в раскрывающийся список? - PullRequest
0 голосов
/ 05 февраля 2019

У меня UltraGrid, заполненный запросом SQL.В одном из столбцов 'groupId' я хотел бы сделать выпадающий список.У меня также есть SQL-запрос.Ultragrid заполнен, но я не могу понять, какая часть выпадающего списка.

Private Sub LoadGrid()
    ' This is the table for the whole grid
    Dim sSql As String = "SELECT [categoryId], [groupId], [sortOrder], [active], [compositeGroup], [multipleValues] FROM [cp].[ec_category_metadatagroup]"
    Dim dt As DataTable = mobjGlobals.GetData(sSql, ConfigLookup.ApiKey).Tables(0)

    UltraGrid1.DataSource = dt

    ' This is the table for the groupId DropDownList Column
    sSql = "SELECT Id, Description FROM [cp].[ec_metadata_subgroup]"
    Dim ddt As DataTable = mobjGlobals.GetData(sSql, ConfigLookup.ApiKey).Tables(0)

End Sub

1 Ответ

0 голосов
/ 05 февраля 2019

Простая настройка свойства ValueList для вашего столбца на экземпляр списка значений создаст для вас DropDown.Все, что вам нужно, это функция, которая преобразует ваш DataTable в ValueList или, что лучше, метод расширения для объекта DataTable, подобный этому

Module DataTableExtensions
    <Extension()>
    Public Function ToValueList(dt As DataTable , valueMember As String, displayMember As String) As ValueList 
        Dim vl As ValueList = New ValueList()

        ' We follow the sort order set on the DataTable
        For Each r In dt.DefaultView
            vl.ValueListItems.Add(r(valueMember), r(displayMember))
        Next
        Return vl
    End Function
End Module

Теперь вы можете вызывать эту функцию следующим образом

' This is the table for the groupId DropDownList Column
sSql = "SELECT Id, Description FROM [cp].[ec_metadata_subgroup]"
Dim ddt As DataTable = mobjGlobals.GetData(sSql, ConfigLookup.ApiKey).Tables(0)
' Call the datatable's extension method 
Dim vl As ValueList = ddt.ToValueList("Id", "Description")

' And finally use the ValueList property from the column
UltraGrid1.DisplayLayout.Bands(0).Columns("groupid").ValueList = vl

Заметьте, однако, что вы должны запускать этот код внутри события InitializeLayout вместо выполнения inline после инициализации источника данных сетки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...