Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在运行时使用sql查询在datatable中添加行_C#_Winforms_Sql Server 2008_Datagridview_Datatable - Fatal编程技术网

C# 在运行时使用sql查询在datatable中添加行

C# 在运行时使用sql查询在datatable中添加行,c#,winforms,sql-server-2008,datagridview,datatable,C#,Winforms,Sql Server 2008,Datagridview,Datatable,我的winform应用程序上有Textbox1、dataGridView和一个按钮。 场景是:按下按钮时,SQL查询将根据文本框中输入的值运行。并将此查询获取的数据插入dataGridview数据表中。直到现在,我的代码还在工作。 但当我在文本框中键入其他值并按下按钮时,它将替换dataGridview数据表中的记录。 我希望每次在文本框中键入一些值并按下按钮时,都应该在dataGridview数据表中添加行。它不应替换以前添加的数据。 这是我的代码:我需要满足一个要求,即新添加的数据不应该取代

我的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;