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

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

代码:

    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 当我单击按钮时调用此方法
  • 完成后它会调用任何其他方法吗?我建议您保留所有源代码,以便尽快解决问题。您正在延长求解时间。

标签: c# sql-server visual-studio datagridview


【解决方案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 的行
猜你喜欢
  • 1970-01-01
  • 2023-03-14
  • 2014-11-11
  • 1970-01-01
  • 2011-12-01
  • 2019-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多