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?

War es hilfreich?

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]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top