C# DatagridView指向数据库的链接,当用户在文本框中写入时,该链接会更改

C# DatagridView指向数据库的链接,当用户在文本框中写入时,该链接会更改,c#,sql,winforms,datagridview,C#,Sql,Winforms,Datagridview,我想将文本框与datagridview链接,这样当用户在文本框中键入“B”时,datagridview将显示以“B”开头的所有数据。如果用户随后键入“B1”,它将动态显示以“B1”开头的数据,而无需单击按钮。但愿我能说清楚 目前,1)我需要完整地键入我想要检索的数据的名称(因此只键入“B0”不起作用),2)我需要单击一个按钮 这是我的密码: public partial class Repair : Form { public Repair() { Initi

我想将文本框与datagridview链接,这样当用户在文本框中键入“B”时,datagridview将显示以“B”开头的所有数据。如果用户随后键入“B1”,它将动态显示以“B1”开头的数据,而无需单击按钮。但愿我能说清楚

目前,1)我需要完整地键入我想要检索的数据的名称(因此只键入“B0”不起作用),2)我需要单击一个按钮

这是我的密码:

public partial class Repair : Form
{


    public Repair()
    {
        InitializeComponent();



    }



    private void button1_Click(object sender, EventArgs e)
    {

        SqlConnection maConnexion = new SqlConnection("Server= localhost; Database= Seica_Takaya;Integrated Security = SSPI; ");

        maConnexion.Open();

        string Var1 = textBox1.Text;
        SqlCommand command = maConnexion.CreateCommand();
        command.Parameters.AddWithValue("@BoardName", Var1);
        command.Parameters.AddWithValue("@Machine", Var1);
        command.Parameters.AddWithValue("@SerialNum", Var1);
        command.Parameters.AddWithValue("@FComponent", Var1);
        command.CommandText = "SELECT * FROM FailOnly WHERE BoardName=@BoardName OR Machine=@Machine OR SerialNum=@SerialNum OR FComponent=@FComponent AND ReportingOperator != NULL";
        SqlDataAdapter sda = new SqlDataAdapter(command);
        DataSet ds = new DataSet();
        sda.Fill(ds);
        dataGridView1.DataSource = ds.Tables[0];


        //SqlConnection maConnexion = new SqlConnection("Server= localhost; Database= Seica_Takaya;Integrated Security = SSPI; ");
        //string Var1 = textBox1.Text;
        //SqlCommand command = maConnexion.CreateCommand();
        //command.CommandText = "SELECT BoardName FROM FailOnly WHERE BoardName LIKE '%" + Var1 + "%' OR Machine LIKE '%" + Var1 + "%' OR SerialNum LIKE '%" + Var1 + "%'";
        //DataSet datasetSQL = new DataSet();
        //SqlDataAdapter dataSQL = new SqlDataAdapter(command);
        //maConnexion.Open();
        //dataSQL.Fill(datasetSQL); 


    }



    private void button2_Click(object sender, EventArgs e)
    {


        this.Hide();
        Main ff = new Main();
        ff.Show();




    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
       /**
        BindingSource bs = new BindingSource();
        bs.DataSource = dataGridView1.DataSource;
        bs.Filter = string.Format("BoardName LIKE '%{0}%'",textBox1.Text.Replace("'","''"));
        dataGridView1.DataSource = bs;**/





    }
}
结果如下:


非常感谢

按钮中执行您正在执行的操作,单击文本更改事件中的按钮

您必须使用类似SQL的运算符来获取匹配数据。您可以阅读有关LIKE运算符的更多信息


好吧,我不明白。我已经用LIKE和%完成了这项工作,只是我没有使用command.parameters和LIKE和%被严格地放在查询中,它不起作用。我尝试过bindingsource,但效果不太好。这是什么魔法。但是非常感谢。编辑:哦,也许是因为我以前并没有过“若”,你们指的是哪种“若”?而
等和%被严格地放在查询中
,您是否用这样的引号将其括起来<代码>板名,比如“+Var1+”%”?如果(textbox1.test!=”)。可能是的,我在引号上失败了。
private void textBox1_TextChanged(object sender, EventArgs e)
    {
     SqlConnection maConnexion = new SqlConnection("Server= localhost; Database= Seica_Takaya;Integrated Security = SSPI; ");

        if(textBox1.Text!="")
        {
        maConnexion.Open();

        string Var1 = textBox1.Text;
        SqlCommand command = maConnexion.CreateCommand();
        command.Parameters.AddWithValue("@BoardName", Var1 + "%");
        command.Parameters.AddWithValue("@Machine", Var1 + "%");
        command.Parameters.AddWithValue("@SerialNum", Var1 + "%");
        command.Parameters.AddWithValue("@FComponent", Var1 + "%");
        command.CommandText = "SELECT * FROM FailOnly WHERE BoardName LIKE @BoardName OR Machine LIKE @Machine OR SerialNum LIKE @SerialNum OR FComponent LIKE @FComponent AND ReportingOperator != NULL";
        SqlDataAdapter sda = new SqlDataAdapter(command);
        DataSet ds = new DataSet();
        sda.Fill(ds);
        dataGridView1.DataSource = ds.Tables[0];
maConnexion.Close();
    }

    }