0

Я пытаюсь показать DataGrid в своем мобильном приложении после чтения CSV-файла и его обработки. Вот что у меня есть до сих пор:DataGrid не отображает данные

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"); 
    } 
} 

Все, что я получаю, это чистый компонент сетки данных при запуске приложения. Может кто-нибудь указать на мою ошибку? или как это сделать правильно?

ответ

1

Попробуйте без DataSet dataGrid.DataSource = dt;

+0

Спасибо .. просто это сработало. Но я вижу примеры с использованием набора данных. Какие-либо соображения, почему это не сработало? –

0

Вместо:

dataGrid.DataSource = ds;   
dataGrid.Refresh(); 

Try:

dataGrid.SetDataBinding(ds, "myDt"); 

Это имеет эффект установки источника данных и DataMember одновременно.

1

Попробуйте это поможет ...

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 }); 
0

Проблема заключается Вы не можете передать источник данных только как Dataset это должно быть что-то вроде Dataset.Datatable ... Вот это пример

Dataset DS = new Dataset(); 
DS.Tables.Add(TableName); 

// 
Populate dataset 
// 

mydatagrid.Datasource = DS.Tables[0]; 

Так короче говоря, вы должны обратиться к таблице в наборе данных для отображения данных ... Надеюсь, что это помогает ... :)

+0

Plz отметить как ответ, если и найти его так ... –

0

It должен работать хорошо, если вы установите DataSource в таблицу внутри DataSet, а .. что-то вроде:

datagrid.DataSource = ds.Tables["myDt"]; 

Помните, что набор данных может содержать более одной таблицы, и мы должны сказать это явно какой из них использовать или где искать :)

НТН

-1

Я знаю его очень поздно ответить .... Но это будет полезно для других ...

DataSet ds = gridUpdate.GridUpdate(); 

(DonT Worr y о gridUpdate.GridUpdate() его моя функция для создания набора данных)

dataGridView1.DataSource = ds.Tables[0] 
Смежные вопросы