DataGrid zeigt keine Daten an
-
12-12-2019 - |
Frage
Ich versuche, eine anzuzeigen DataGrid
in meiner mobilen Anwendung, nachdem ich eine CSV-Datei gelesen und verarbeitet habe.Folgendes habe ich bisher:
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");
}
}
Beim Ausführen meiner Anwendung erhalte ich lediglich eine leere Datenrasterkomponente.Kann mir jemand meinen Fehler aufzeigen?oder wie macht man das richtig?
Lösung
Versuchen Sie es ohne Datensatz datagrid.dataSource = dt;
Andere Tipps
Probieren Sie es aus, es würde helfen ...
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 });
Anstatt:
dataGrid.DataSource = ds;
dataGrid.Refresh();
Versuchen:
dataGrid.SetDataBinding(ds, "myDt");
Dies hat zur Folge, dass die Datenquelle und das Datenelement gleichzeitig festgelegt werden.
Es sollte auch funktionieren, wenn Sie die DataSource auch auf die Tabelle im DataSet festlegen.etwas wie:
datagrid.DataSource = ds.Tables["myDt"];
Denken Sie daran, dass ein Datensatz mehr als eine Tabelle enthalten kann und wir ihm explizit mitteilen müssen, welche verwendet oder wo gesucht werden soll :)
hth
Das Problem ist, dass Sie die Datenquelle nicht nur als Dataset bezeichnen können. Sie sollte etwa Dataset.Datatable lauten ...Hier ist es ein Beispiel
Dataset DS = new Dataset();
DS.Tables.Add(TableName);
//
Populate dataset
//
mydatagrid.Datasource = DS.Tables[0];
Kurz gesagt, Sie müssen sich auf die Tabelle im Datensatz beziehen, um die Daten anzuzeigen ...Hoffe das hilft...:) :)
Ich weiß, dass es sehr spät ist, darauf zu antworten ... Aber es wird für andere hilfreich sein ...
DataSet ds = gridUpdate.GridUpdate();
(Machen Sie sich keine Sorgen wegen „gridUpdate.GridUpdate()“, es ist meine Funktion, einen Datensatz zu erstellen.)
dataGridView1.DataSource = ds.Tables[0]