DataGrid n'affiche pas les données
-
12-12-2019 - |
Question
J'essaie d'afficher un DataGrid
sur mon application mobile après avoir lu un fichier CSV et l'avoir traité.Voici ce que j'ai jusqu'à présent :
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");
}
}
Tout ce que je reçois, c'est un composant de grille de données vide lors de l'exécution de mon application.Quelqu'un peut-il signaler mon erreur ?ou comment faire cela correctement ?
La solution
Essayez sans jeu de données dataGrid.datasource = dt;
Autres conseils
Essayez ceci, cela aiderait...
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 });
Au lieu de:
dataGrid.DataSource = ds;
dataGrid.Refresh();
Essayer:
dataGrid.SetDataBinding(ds, "myDt");
Cela a pour effet de définir simultanément la source de données et le membre de données.
Cela devrait également fonctionner si vous définissez également le DataSource sur la table à l'intérieur du DataSet ..quelque chose comme:
datagrid.DataSource = ds.Tables["myDt"];
N'oubliez pas qu'un ensemble de données peut contenir plus d'une table et que nous devons lui indiquer explicitement laquelle utiliser ou où chercher :)
hth
Le problème est que vous ne pouvez pas faire référence à la source de données uniquement en tant que Dataset, cela devrait être quelque chose comme Dataset.Datatable...Ici c'est un exemple
Dataset DS = new Dataset();
DS.Tables.Add(TableName);
//
Populate dataset
//
mydatagrid.Datasource = DS.Tables[0];
En bref, vous devez vous référer au tableau dans l'ensemble de données pour afficher les données...J'espère que cela t'aides...:)
Je sais qu'il est très tard pour répondre... Mais cela sera utile à d'autres...
DataSet ds = gridUpdate.GridUpdate();
(ne vous inquiétez pas de gridUpdate.GridUpdate() c'est ma fonction pour créer un ensemble de données)
dataGridView1.DataSource = ds.Tables[0]