C# 在运行时使用sql查询在datatable中添加行
我的winform应用程序上有Textbox1、dataGridView和一个按钮。 场景是:按下按钮时,SQL查询将根据文本框中输入的值运行。并将此查询获取的数据插入dataGridview数据表中。直到现在,我的代码还在工作。 但当我在文本框中键入其他值并按下按钮时,它将替换dataGridview数据表中的记录。 我希望每次在文本框中键入一些值并按下按钮时,都应该在dataGridview数据表中添加行。它不应替换以前添加的数据。 这是我的代码:我需要满足一个要求,即新添加的数据不应该取代以前添加的数据。 提前谢谢。C# 在运行时使用sql查询在datatable中添加行,c#,winforms,sql-server-2008,datagridview,datatable,C#,Winforms,Sql Server 2008,Datagridview,Datatable,我的winform应用程序上有Textbox1、dataGridView和一个按钮。 场景是:按下按钮时,SQL查询将根据文本框中输入的值运行。并将此查询获取的数据插入dataGridview数据表中。直到现在,我的代码还在工作。 但当我在文本框中键入其他值并按下按钮时,它将替换dataGridview数据表中的记录。 我希望每次在文本框中键入一些值并按下按钮时,都应该在dataGridview数据表中添加行。它不应替换以前添加的数据。 这是我的代码:我需要满足一个要求,即新添加的数据不应该取代
private void button1_Click(object sender, EventArgs e)
{
try
{
SqlConnection con = new SqlConnection(@"Data Source=AFZAL\SQLEXPRESS;Initial Catalog=GIMS_LabInfo;Integrated Security=True");
con.Open();
SqlCommand sc = new SqlCommand("select Profcode, Profname, Profcharges, Profduedate from Profnames$ Where Profname = '"+comboBox1.Text+"'", con);
SqlDataAdapter sda = new SqlDataAdapter(sc);
DataTable ds = new DataTable();
sda.Fill(ds);
dataGridView2.DataSource = ds;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
在代码中,没有任何命令将文本框中的值添加到DataGridView。添加值的代码应该如下所示:
dataGridView1.Rows[0]。单元格[0]。值=textBox1.Text 您应该有一个全局变量,它包含由各种查询加载到网格中的行,并用于将其内容绑定到DataGridView
DataTable currentData = null;
然后,在第一次查询之后,使用该方法复制查询返回的表和数据,并将此currentData绑定到datagrid。
接下来的查询使用方法将提取的行添加到currentData表中
还要注意,我在构建命令文本时删除了字符串连接,并使用了参数化查询。另外,using语句确保正确关闭和处理所使用的命令和连接。我认为在网格视图中插入数据源之前,您需要清除对datagridview的访问。 因此,在你的按钮上,单击“首先执行此操作”
dataGridView1.DataSource = null;
非常感谢你,史蒂夫。但我在这一行currentData.LoadDataRowrow.ItemArray上遇到了错误;错误:“LoadDataRow”方法没有重载接受“1”参数。我没有正确检查文档。还有另一个参数可以使添加的行保持不变状态。回答更新谢谢你,史蒂夫。在过去的4天里,我一直在这样做,但没有成功。你做到了,伙计!再次感谢你:我能再要求一点帮助吗?我想在textbox2中有“费用总额”列。请在这方面也帮助我。谢谢。@AfzalQazi如果你有其他问题,解决问题的最佳方法是发布另一个问题。如果他们有共同的背景,你甚至可以链接到这个问题。如果你在评论中提出另一个问题,唯一知道你的问题的是我限制了你尽快解决问题的可能性。
dataGridView1.DataSource = null;