当我在 DataGridView 中单击搜索数据按钮时,它会在 DataGridView 中添加我想要搜索的内容

Posted

技术标签:

【中文标题】当我在 DataGridView 中单击搜索数据按钮时,它会在 DataGridView 中添加我想要搜索的内容【英文标题】:When I Click Button For Search Data in DataGridView, It Adds What I Want to Search in DataGridView 【发布时间】:2021-04-25 02:47:53 【问题描述】:

就像我在标题中所说的,

代码:

    private void mtrTile_Search_Click(object sender, EventArgs e)
    
        if (
            txtBox_TeacherName.TextLength    == 0 |
            txtBox_TeacherSurname.TextLength == 0
            )
        
            MessageBox.Show(
                this,
                "Lütfen Bütün Kutuları Doldurunuz!",
                "UYARI!",
                MessageBoxButtons.OK,
                MessageBoxIcon.Warning
                );
        
        else
        
            try
            
                con.Open();

                SqlDataAdapter sda = new SqlDataAdapter("SELECT TeacherName AS [Öğretmenin Adı], TeacherSurname AS [Öğretmenin Soyadı] FROM Teachers WHERE(TeacherName LIKE '" + txtBox_TeacherName.Text + "')AND (TeacherSurname LIKE '" + txtBox_TeacherSurname.Text + "')", con);
                sda.Fill(ds);
                DGV_Teachers.DataSource = ds.Tables[0];

                con.Close();
            
            catch (Exception err)
            
                con.Close();

                MessageBox.Show(
                    err.ToString(),
                    "HATA!",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error
                    );
            
        
    

通常这样


点击按钮五次后

【问题讨论】:

提供您的完整源代码,您可能在 aspx 文件中的其他位置添加了一些内容,或者可能正在调用您的添加功能而不是搜索功能。 @anilshrestha 我没有使用 asp.net,我提供了完整的源代码 您能否提供调用此方法的来源:void mtrTile_Search_Click(object sender, EventArgs e)?或者请提供前端部分以供搜索(如果有)。 @anilshrestha 当我单击按钮时调用此方法 完成后它会调用任何其他方法吗?我建议您保留所有源代码,以便尽快解决问题。您正在延长求解时间。 【参考方案1】:

在开始连接之前,尝试使用:

DataSet ds = new DataSet();

或者,

 DGV_Teachers.DataSource = null;
    DGV_Teachers.DataBind();

或者,

DGV_Teachers.Rows.Clear();
DGV_Teachers.Refresh();

或者,

dt.Rows.Clear();

【讨论】:

第一个不起作用,但第二个给我一个错误,错误说“无法清除此列表” 对第一个进行了一些更改并添加了第三个。请参考这可能会解决。 visual studio 对 DGV_Teachers.DataBind() 说“‘DataGridView’不包含‘DataBind’的定义”;【参考方案2】:

您是如何定义 DataSet ds 的?您是否将其声明为全局变量?尝试在方法中声明为局部变量。

这是我的测试代码,一切正常。

private void Form1_Load(object sender, EventArgs e)

    using (SqlConnection conn = new SqlConnection(@"connection string"))
    
        SqlDataAdapter sda = new SqlDataAdapter("Select * From Movie", conn);
        DataSet ds = new DataSet();
        sda.Fill(ds, "t1");
        this.dataGridView1.DataSource = ds.Tables["t1"];
    



private void btnSearch_Click(object sender, EventArgs e)

    using (SqlConnection conn = new SqlConnection(@"connection string"))
    
        SqlDataAdapter sda = new SqlDataAdapter("Select* From Movie Where Title=@Title", conn);
        sda.SelectCommand.Parameters.AddWithValue("@Title", textBox1.Text);
        DataSet ds = new DataSet();
        sda.Fill(ds);
        dataGridView1.DataSource = ds.Tables[0];
    

【讨论】:

我终于修复了错误,错误的原因实际上是如果我将数据集设置为全局,它会添加我想要搜索的 datagridview 的行

以上是关于当我在 DataGridView 中单击搜索数据按钮时,它会在 DataGridView 中添加我想要搜索的内容的主要内容,如果未能解决你的问题,请参考以下文章

如何在按钮单击时更新datagridview中的记录?

VB.NET 无法更新 datagridview 中的 SQL 数据

C#中如何在文本框中输入数据然后按回车就查询数据库将结果显示在Datagridview中?

如何打印单行DataGridView

datagridview的单击事件

使用 c# 编辑 DataGridview 并将其保存在数据库表中