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