Динамическое изменение схемы сетки Devexpress в зависимости от источника данных - PullRequest
0 голосов
/ 24 октября 2019

Попытка встроить инструмент администрирования в VB.Net, который будет отображать отображаемые данные на основе динамического выбора SQL из любой таблицы. Работает нормально в первый раз, во второй раз отображаемые в DevExpress XtraGrid столбцы совпадают с новым оператором SQL и набором результатов, таблица данных содержит данные, свойства сетки должны соответствовать источнику данных с данными, но данные не отображаются насетка во время отображения.

    Try
        'Initialize Datatable and Grid
        dt.Reset()
        GridView1.Columns.Clear()
        grdAdminSQL.DataSource = Nothing

        'Get the data and load into data table
        myCmd = myConn.CreateCommand
        myCmd.CommandText = tbAdmSQL.Text.Trim
        myConn.Open()
        myreader = myCmd.ExecuteReader()
        dt.Load(myreader)

        'Reset the Data Source on the grid
        grdAdminSQL.DataSource = dt
        grdAdminSQL.RefreshDataSource()
    Catch ex As Exception
    Finally
        myConn.Close()
        myConn.Dispose()
    End Try

Ответы [ 2 ]

0 голосов
/ 25 октября 2019

Я исправляю проблемы, перемещая селектор во внешнюю функцию, которая возвращает таблицу данных. По какой-то причине, если таблица данных создается локально в области формы, данные не будут отображаться в сетке.

Try
        'Initialize Datatable and Grid
        dt.Reset()
        GridView1.Columns.Clear()
        grdAdminSQL.DataSource = Nothing

        'Get the data and load into data table
        dt = TMSII_ClassLib.Common.ExecuteSQL(MyConnection, tbAdmSQL.Text.Trim)
        'Reset the Data Source on the grid
        grdAdminSQL.DataSource = dt
        grdAdminSQL.RefreshDataSource()
    Catch ex As Exception
    Finally
        myConn.Close()
        myConn.Dispose()
    End Try

0 голосов
/ 24 октября 2019

Я думаю, это потому, что GridView1.Columns.Clear() недостаточно, чтобы DevExpress знал, что ему нужно заново создать столбцы.

Вам также необходимо позвонить

grdAdminSQL.MainView.PopulateColumns()

после того, как выустановили ваш источник данных.

Если это не сработает, добавьте

grdAdminSQL.ForceInitialize()
...