C# 在datagridview中保留行

C# 在datagridview中保留行,c#,visual-studio-2010,datagridview,C#,Visual Studio 2010,Datagridview,为什么我想在一个选定的组合框值上,将行从数据库移动到datagridview private void test_Load(object sender, EventArgs e) { string str = "select * from sale_tab"; cmd = new SqlCommand(str, con); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read())

为什么我想在一个选定的组合框值上,将行从数据库移动到datagridview

private void test_Load(object sender, EventArgs e)
{

    string    str = "select * from sale_tab";
    cmd = new SqlCommand(str, con);
    SqlDataReader reader = cmd.ExecuteReader();
    while (reader.Read())
    {
        comboBox1.Items.Add(reader["Item_name"].ToString());
    }
    reader.Close();
    con.Close();
} 
它显示行,但当我单击组合框中的下一个值时,它显示新行,但第一行不保留在gridview中。我希望它保留所有行。例如,我从组合框中单击“书本”,它显示“书本详细信息”,当我单击“计算机”时,它应在“书本详细信息”下添加行

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{ 

   str = "select * from sale_tab where item_name='" + comboBox1.Text + "'";
   cmd = new SqlCommand(str, con);
   sda = new SqlDataAdapter(cmd);
   DataSet ds = new DataSet();
   sda.Fill(ds, "sale_tab");
   dataGridView1.DataMember = "sale_tab";
   dataGridView1.DataSource = ds;
   con.Close()
}

dataGrid交换所有选项的原因是因为这些行
DataSet ds=新数据集();
sda.填写(ds,“销售标签”);
dataGridView1.DataMember=“销售”选项卡;
dataGridView1.DataSource=ds
如果您创建一个gobal datatable变量,那么您可以在方法中使用一个临时datatable,这样您就可以像这样将datatable组合在一起

Golbal variable:
datatable dtAll = new datatable();

//put this inside the method body
datatable _dt = new datatable(); 
  str = "select * from sale_tab where item_name='" + comboBox1.Text + "'";
   cmd = new SqlCommand(str, con);
   using (SqlDataAdapter _da = new SqlDataAdapter(_cmd))
    {
        _da.Fill(_dt);
    }
   dtAll.Merge(_dt);

   dataGridView1.DataSource = dtAll;
   con.Close()

希望这有帮助

您的dataGrid将所有选项替换掉的原因是因为这些行
DataSet ds=新数据集();
sda.填写(ds,“销售标签”);
dataGridView1.DataMember=“销售”选项卡;
dataGridView1.DataSource=ds
如果您创建一个gobal datatable变量,那么您可以在方法中使用一个临时datatable,这样您就可以像这样将datatable组合在一起

Golbal variable:
datatable dtAll = new datatable();

//put this inside the method body
datatable _dt = new datatable(); 
  str = "select * from sale_tab where item_name='" + comboBox1.Text + "'";
   cmd = new SqlCommand(str, con);
   using (SqlDataAdapter _da = new SqlDataAdapter(_cmd))
    {
        _da.Fill(_dt);
    }
   dtAll.Merge(_dt);

   dataGridView1.DataSource = dtAll;
   con.Close()

希望这有帮助

@pål-jørgenvaldersnesas我是.net新手,请您进一步解释一下。阅读本文,您应该能够理解唯一的区别是您需要创建本地临时数据表,以便将它们与dtAll.merge(dtTemp)合并;本文将介绍如何在组合框中添加数据,但我的问题不是在组合框中添加数据,而是在选择组合框值时,它会在网格视图中按行显示数据,就像我选择第一项时,它会显示所有细节,当我单击第二项时,它应该显示所有细节,thanksIve编辑了答案,提供了您需要修复的确切内容,但本网站的主要目的是引导您找到您需要的答案,不是真的给你code@pål-jørgenvaldersnesas我是.net新手,请您进一步解释一下。阅读本文,您应该能够理解唯一的区别是,您需要创建本地临时数据表,以便将它们与dtAll.merge(dtTemp)合并;本文将介绍如何在组合框中添加数据,但我的问题不是在组合框中添加数据,而是在选择组合框值时,它会在网格视图中按行显示数据,就像我选择第一项时,它会显示所有细节,当我单击第二项时,它应该显示所有细节,thanksIve编辑了答案,以提供您需要修复的确切内容,但本网站的主要目的是引导您找到所需的答案,而不是直接提供代码