Я заполняю DataTable некоторыми значениями (после определения имен столбцов), а затем использую его как источник данных для сетки Sage - функционально очень похожий на WinForms DataGridView.
До сих пор я пытался добавить тип данных в столбцы DataTable и заполнить BindingSource объектом DataTable, а затем связать его с сеткой Sage. При просмотре содержимого DataTable во время отладки вы можете увидеть, есть ли данные с помощью DataSet Visualiser.
Создание таблицы данных -
DataTable failedOrders = new DataTable();
failedOrders.Columns.Add("externalItemCodeColumn", typeof(String));
failedOrders.Columns.Add("reasonColumn", typeof(String));
foreach (String item in insufficientItemsAvailable)
{
DataRow dataRow = failedOrders.NewRow();
dataRow["externalItemCodeColumn"] = item;
dataRow["reasonColumn"] = "Not enough available items in WAREHOUSE";
failedOrders.Rows.Add(dataRow);
}
Заполнение сетки мудреца -
Sage.Common.Controls.GridColumn externalItemCodeColumn = new Sage.Common.Controls.GridColumn();
externalItemCodeColumn.Caption = "External Item Code";
externalItemCodeColumn.DisplayMember = "externalItemCodeColumn";
Sage.Common.Controls.GridColumn reasonColumn = new Sage.Common.Controls.GridColumn();
reasonColumn.Caption = "Reason";
reasonColumn.DisplayMember = "reasonColumn";
failedOrdersGrid.Columns.Add(externalItemCodeColumn);
failedOrdersGrid.Columns.Add(reasonColumn);
failedOrdersGrid.DataSource = FailedOrders;
//failedOrdersGrid.Refresh(); - this doesn't seem to make a difference
Обратите внимание, что failedOrders передается другому методу, поэтому имя меняется с failOrders на FailedOrders.
Просто чтобы проверить, что это поведение не относится к Sage Grid, я попытался заполнить обычный WinForms DGV таблицей DataTable. (Примечание. Я отключил AutoGenerateColumns, так как это, похоже, не вариант для Sage Grid).
dataGridView1.AutoGenerateColumns = false;
dataGridView1.Columns.Add("externalItemCodeColumn", "External Item Code");
dataGridView1.Columns.Add("reasonColumn", "Reason");
dataGridView1.DataSource = FailedOrders;
Я ожидаю, что содержимое Sage Grid будет соответствовать содержимому DataGrid, но вместо этого получу пустые строки.