私はdatagridviewとテキストボックスを持っています。ユーザーがテキストボックスに文字を入力すると、datagridviewを並べ替えて、結果をテキストボックスのテキストとして表示します。しかし、ユーザーがテキストボックスに何も入力しなかったり、テキストボックスにあるものを消さなかったりすると、データベースのすべての結果を表示するようにdatagridviewを設定します。実際、私は2週間前に成功しましたが、私はいくつかの変更を加えましたが、もう動作しません。ここでRefresh Datagridview、テキストボックスに挿入するときの詳細行
が私のコードです:
private void textBox1_TextChanged(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();
SqlCommand command1 = maConnexion.CreateCommand();
if (Program.UserType == "admin")
{
if (textBox1.Text != String.Empty)
{
command.Parameters.AddWithValue("@SerialNum", Var1 + "%");
command1.Parameters.AddWithValue("@SerialNum", Var1 + "%");
command.CommandText = "SELECT Message, FComponent, ReadValue, ValueReference, FaultCodeByOp, RepairingTime FROM FailAndPass WHERE SerialNum LIKE @SerialNum AND FComponent IS NOT NULL";
command1.CommandText = "SELECT Machine, BoardName, BoardNumber FROM FailAndPass WHERE SerialNum LIKE @SerialNum And FComponent IS NOT NULL";
}
}
else
{
if (textBox1.Text != String.Empty)
{
command.Parameters.AddWithValue("@SerialNum", Var1 + "%");
command1.Parameters.AddWithValue("@SerialNum", Var1 + "%");
command.CommandText = "SELECT Message, FComponent, ReadValue, ValueReference, FaultCodeByOp, RepairingTime FROM FailAndPass WHERE (SerialNum LIKE @SerialNum) AND ReportingOperator IS NULL AND FComponent IS NOT NULL ";
command1.CommandText = "SELECT DISTINCT SerialNum, Machine, BoardName, BoardNumber FROM FailAndPass WHERE ReportingOperator IS NULL AND FComponent IS NOT NULL AND (SerialNum LIKE @SerialNum) ";
}
}
if (!string.IsNullOrWhiteSpace(textBox1.Text))
{
SqlDataAdapter sda = new SqlDataAdapter(command);
SqlDataAdapter sda1 = new SqlDataAdapter(command1);
DataTable dt = new DataTable();
DataTable dt1 = new DataTable();
sda.Fill(dt);
sda1.Fill(dt1);
DataColumn dcIsDirty = new DataColumn("IsDirty", typeof(bool));
DataColumn dcIsDirty1 = new DataColumn("IsDirty", typeof(bool));
dcIsDirty.DefaultValue = false;
dcIsDirty1.DefaultValue = false;
dt.Columns.Add(dcIsDirty);
dt1.Columns.Add(dcIsDirty1);
dataGridView1.DataSource = dt;
dataGridView2.DataSource = dt1;
maConnexion.Close();
dataGridView1.Columns[6].Visible = false;
dataGridView2.Columns[3].Visible = false;
}
}
あなたが見るように、DataGridViewのは、ユーザーが列を編集し、そのボタンをクリックすることで、データベースに新しいデータを書き込むことができ、塗りつぶしです。しかし、ユーザーがテキストボックスにserialNumを書くと、結果は1つしか表示されず、例としてB0033から始まるすべての結果が表示されるわけではありません。
[最小限で完全であり、かつ検証可能な例を作成する方法](https://stackoverflow.com/help/mcve)を投稿してください。私はあなたの質問には多くの不必要なコードがあると思います。 – Luke
編集して変更します。 –
私の編集を受け入れてください - 私はコメントされたコードも削除しました。あなたは何を正確に変更したのですか? – Luke