我的winform应用程序上有Textbox1,dataGridView和Button。 场景是:按下按钮时,SQL Query基于在文本框中输入的值运行。并且此查询提取的数据插入到dataGridview(dataTable)中。直到这里,我的代码正在运行。 但是当我在文本框中键入其他值并按下按钮时,它将替换dataGridview(dataTable)中的记录。 我希望每当我在文本框中键入一些值并按下按钮时,应该在dataGridview(dataTable)中添加row()。它不应取代以前添加的数据。 这是我的代码:我需要满足要求,新添加的数据不应取代以前的数据。 提前致谢。
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);
}
}
答案 0 :(得分:0)
在您的代码中,您没有任何命令可以将TextBox中的值添加到DataGridView。添加值的代码应该是这样的:
dataGridView1.Rows [0] .Cells [0] .Value = textBox1.Text;
答案 1 :(得分:0)
你应该有一个全局变量,它包含各种查询在你的网格中加载的行,它用于将其内容绑定到DataGridView。
DataTable currentData = null;
然后,在第一次查询之后,使用DataTable.Copy方法复制查询返回的表和数据,并将此currentData
绑定到数据网格。
下一个查询使用LoadDataRow方法
currentData
表中
private void button1_Click(object sender, EventArgs e)
{
try
{
using(SqlConnection con = new SqlConnection(....))
using(SqlCommand sc = new SqlCommand(@"select Profcode, Profname, Profcharges,
Profduedate from Profnames$
Where Profname = @name", con))
{
con.Open();
cmd.Parameters.AddWithValue("@name",comboBox1.Text);
SqlDataAdapter sda = new SqlDataAdapter(sc);
DataTable ds = new DataTable();
sda.Fill(ds);
if(currentData == null)
{
currentData = ds.Copy();
dataGridView2.DataSource = currentData;
}
else
{
currentData.BeginLoadData();
foreach(DataRow row in ds.Rows)
currentData.LoadDataRow(row.ItemArray, true);
currentData.EndLoadData();
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
另请注意,我在构建命令文本时删除了字符串连接,而是使用参数化查询。而且using语句确保正确关闭和处理使用的命令和连接。
答案 2 :(得分:0)
我认为您希望在网格视图中插入数据源之前清除数据网格视图。 所以在你的按钮上点击首先执行此操作
dataGridView1.DataSource = null;