DataGrid não exibe dados
-
12-12-2019 - |
Pergunta
Estou tentando exibir um DataGrid
no meu aplicativo móvel depois de ler um arquivo CSV e processá-lo.Aqui está o que tenho até agora:
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");
}
}
Tudo o que recebo é um componente de grade de dados em branco ao executar meu aplicativo.Alguém pode apontar meu erro?ou como fazer isso corretamente?
Solução
Tente sem o conjunto de dados datagrid.dataSource = dt;
Outras dicas
Tente isso, isso ajudaria ...
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 });
Em vez de:
dataGrid.DataSource = ds;
dataGrid.Refresh();
Tentar:
dataGrid.SetDataBinding(ds, "myDt");
Isto tem o efeito de definir a fonte de dados e o membro de dados ao mesmo tempo.
Deve funcionar também se você definir o DataSource para a tabela dentro do DataSet também.algo como:
datagrid.DataSource = ds.Tables["myDt"];
Lembre-se de que um conjunto de dados pode conter mais de uma tabela e temos que dizer explicitamente qual delas usar ou onde procurar :)
hth
O problema é que você não pode referir-se à fonte de dados apenas como Dataset, deveria ser algo como Dataset.Datatable ...Aqui está um exemplo
Dataset DS = new Dataset();
DS.Tables.Add(TableName);
//
Populate dataset
//
mydatagrid.Datasource = DS.Tables[0];
Resumindo, você deve consultar a tabela dentro do conjunto de dados para exibir os Dados...Espero que isto ajude...:)
Eu sei que é muito tarde para responder... Mas será útil para outras pessoas...
DataSet ds = gridUpdate.GridUpdate();
(não se preocupe com gridUpdate.GridUpdate() é minha função para criar conjunto de dados)
dataGridView1.DataSource = ds.Tables[0]