2014-07-14 101 views
0

我有一列中的表格列表中的另一列中的复选框。我想查看我通过点击复选框在datagridview中显示来自多个表的数据

选择表中的数据

我的代码是

 for (int i = 0; i < dataGridView2.Rows.Count; i++) 
     { 
      if (dataGridView2.Rows[i].Cells[1].Value != null) 
      { 
       if ((Boolean)dataGridView2.Rows[i].Cells[1].Value == true) 
       { 
        try 
        { 
         string myConnection="datasource=localhost;database=dmrc;port=3306;username=root;password=root"; 
         MySqlConnection myConn = new MySqlConnection(myConnection); 
         string query = "select * from dmrc." + dataGridView2.Rows[i].Cells[0].Value.ToString(); 
         MySqlCommand cmdDatabas = new MySqlCommand(query, myConn); 
         MySqlDataAdapter myDataAdapter = new MySqlDataAdapter(); 
         myDataAdapter.SelectCommand = cmdDatabas; 
         DataTable dbdataset = new DataTable(); 
         myDataAdapter.Fill(dbdataset); 
         BindingSource bSource = new BindingSource(); 
         bSource.DataSource = dbdataset; 
         f1.dataGridView1.DataSource = bSource; 
         myDataAdapter.Update(dbdataset); 
         f1.Show(); 
        } 
        catch (Exception ex) 
        { 
         MessageBox.Show(ex.Message); 
        } 
       } 
      } 

但每次它只显示1个表的数据。我应该改变什么,在哪里..?

回答

0

之前,这个问题都可以回答,您可以请确认 1)如果dataGridView2.Rows [I] .Cells [1]复选框列 2)dataGridView1是要显示一个表格下方的另一个网格其他 3)构成dataGridView1数据源的表是否具有相同顺序的相同列? 由于所提供的信息不足。

当且仅当“select *”以相同的顺序给出相同的列时,您可以添加多个表。在for循环之前创建一个空数据表(让我们称它为master)。在每次迭代中,将新的可数据表dbdataset合并到主数据表。您可以在这里查看语法:link。这提供了有关如何处理列和主键的详细信息。数据表中的自定义修改也可以在完成之后完成。语法是link。 希望这有助于!

DataTable masterdbdataset = new DataTable(); 
//Perform custom operations here if necessary 
    BindingSource bSource = new BindingSource(); 

    for (int i = 0; i < dataGridView2.Rows.Count; i++) 
    { 
     if (dataGridView2.Rows[i].Cells[1].Value != null) 
     { 
      if ((Boolean)dataGridView2.Rows[i].Cells[1].Value == true) 
      { 
       try 
       { 
        string myConnection="datasource=localhost;database=dmrc;port=3306;username=root;password=root"; 
        MySqlConnection myConn = new MySqlConnection(myConnection); 
        string query = "select * from dmrc." + dataGridView2.Rows[i].Cells[0].Value.ToString(); 
        MySqlCommand cmdDatabas = new MySqlCommand(query, myConn); 
        MySqlDataAdapter myDataAdapter = new MySqlDataAdapter(); 
        myDataAdapter.SelectCommand = cmdDatabas; 
        DataTable dbdataset = new DataTable(); 
        myDataAdapter.Fill(dbdataset); 
        myDataAdapter.Update(dbdataset); 
        masterdbdataset.Merge(dbdataset); 
       } 
       catch (Exception ex) 
       { 
        MessageBox.Show(ex.Message); 
       } 
      } 
     } 
} 
    bSource.DataSource = masterdbdataset; 
    f1.dataGridView1.DataSource = bSource; 
    f1.Show(); 
+0

yes..cells [1]是复选框 dataGridView1被另一个网格 – user3808299

+0

好了,所以这个问题似乎是这里: f1.dataGridView1.DataSource = bSource; 循环的每次迭代只是扫描下一个表,并使用当前表的行重置dataGridView1中的内容。你可能想要做的是“追加”行到你的dataGridView1。 – nikhilsharmaNS

+0

我该怎么做..?你可以给我的代码 – user3808299

相关问题