DataGrid не отображает данные
-
12-12-2019 - |
Вопрос
Я пытаюсь отобразить DataGrid
в моем мобильном приложении после чтения файла CSV и его обработки.Вот что у меня есть на данный момент:
private void btOpenFile_Click(object sender, EventArgs e)
{
try
{
// Process all data into an array of Object
// this.records array contains objects of type MyRecord
// Create datatable and define columns
DataTable dt = new DataTable("myDt");
dt.Columns.Add( new DataColumn("String A",typeof(string)));
dt.Columns.Add( new DataColumn("Int 1", typeof(int)));
// Loop through and create rows
foreach(MyRecord record in records) {
DataRow row = dt.NewRow();
row[0] = record.stringA;
row[1] = record.int1;
dt.Rows.Add(row);
}
// Create dataset and assign it to the datasource..
DataSet ds = new DataSet("myDs");
ds.Tables.Add(dt);
dataGrid.DataSource = ds;
dataGrid.Refresh();
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message,"Error");
}
}
Все, что я получаю, это пустой компонент сетки данных при запуске моего приложения.Может ли кто-нибудь указать на мою ошибку?или как это сделать правильно?
Решение
Попробуйте без набора данных dataGrid.datasource = dt;
Другие советы
Попробуйте, это поможет...
DataSet Ds = new DataSet();
DataTable Dt = new DataTable();
Ds.Tables.Add(Dt);
Dt.Columns.Add(new DataColumn("String A", typeof(string)));
Dt.Columns.Add(new DataColumn("Int 1", typeof(int)));
Dt.Rows.Add(new object[] { "Patricia", 3 });
Dt.Rows.Add(new object[] { "John", 4 });
Dt.Rows.Add(new object[] { "Mayer", 5 });
Вместо:
dataGrid.DataSource = ds;
dataGrid.Refresh();
Пытаться:
dataGrid.SetDataBinding(ds, "myDt");
Это приводит к одновременной настройке источника данных и элемента данных.
Это также должно работать, если вы также установите DataSource в таблицу внутри DataSet.что-то вроде:
datagrid.DataSource = ds.Tables["myDt"];
Помните, что набор данных может содержать более одной таблицы, и мы должны явно указать, какую из них использовать или где искать :)
хз
Проблема в том, что вы не можете ссылаться на источник данных только как на набор данных, это должно быть что-то вроде Dataset.Datatable...Вот это пример
Dataset DS = new Dataset();
DS.Tables.Add(TableName);
//
Populate dataset
//
mydatagrid.Datasource = DS.Tables[0];
Короче говоря, вам нужно обратиться к таблице в наборе данных, чтобы отобразить данные...Надеюсь это поможет...:)
Я знаю, что уже очень поздно отвечать.... Но это будет полезно другим...
DataSet ds = gridUpdate.GridUpdate();
(не беспокойтесь о GridUpdate.GridUpdate() — это моя функция для создания набора данных)
dataGridView1.DataSource = ds.Tables[0]