2012-05-25 6 views
1

У меня есть DataSet и DataGridView. Если я нажму на первую кнопку, я хочу показать данные из первой таблицы, а если я нажму секунду, я хочу показать данные из второй таблицы.Заполнение DataGridView из набора данных

Я попытался следующие

if(b==1) 
{ 
    dataGridView1.DataSource = ds.Table1; 
} 
else if(b==1) 
{ 
    dataGridView1.DataSource = ds.Table2; 
} 

Но что я вижу пустой DataGridView (без имен столбцов).

ответ

3

DataSet добавляет таблицы в коллекцию Tables, и вы можете получить доступ к этим таблицам из этого путем их имени индекса или таблицы.

Создать общее событие для кнопок, создавать, как следовать по Form_Load:

btn1.Click += new EventHandler(Button_Click); 
btn2.Click += new EventHandler(Button_Click); 

, а затем метод события, как:

void Button_Click(object sender, EventArgs e) 
     { 
      if ((sender as Button) == btn1) 
      { 
       dataGridView1.DataSource = ds.Tables[0]; 
      } 
      else if ((sender as Button) == btn2) 
      { 
       dataGridView1.DataSource = ds.Tables[1]; 
      } 
     } 

////

if(b==1) 
{ 
dataGridView1.DataSource = ds.Tables[0]; 
} 
else if(b==2) 
{ 
dataGridView1.DataSource = ds.Tables[1]; 
} 

например

DataTable dt = new DataTable("Table1"); 
DataTable dt2 = new DataTable("Table2"); 

DataSet ds = new DataSet(); 
ds.Tables.Add(dt); 
ds.Tables.Add(dt2); 

//Now you can access these as: 

if(b==1) 
    { 
    dataGridView1.DataSource = ds.Tables["Table1"]; 
    } 
    else if(b==2) 
    { 
    dataGridView1.DataSource = ds.Tables["Table2"]; 
    } 
0

Вы вызвали привязку данных после назначения источника данных?

dataGridView1.DataBind() 
+0

... думаю, что этот вариант предназначен только для веб-форм, в отличие от ваших winFroms – whytheq