検索を行うためのフィルタを備えたdatagridviewがあります。データベースを更新してからdgvをデータソースにリセットすると、フィルタが失われます。私はResetBindingsをやってみたが、それは役に立たなかった。フォームを閉じて変更を再開すると、「リアルタイム」で発生するようにしたいと思います。アドバイスをいただければ幸いです。更新後にフィルタを使用してバインドされたdatagridviewを更新するC#
私はSQLビューに基づいてデータセットを持っています。このデータセットには、このビューに基づくテーブルがあります。このテーブルには、datagridviewがバインドされています。私はテキストボックスとdgvの列にバインドされているコンボボックスを含むいくつかのコントロールを持っています。 1つまたは複数のI変更を保存バインドコントロールの、更新テーブルを変更することによってDGVの行に変更を行った後
private void txtFilterString_TextChanged(object sender, EventArgs e)
{
ToolStripTextBox tb = (ToolStripTextBox)sender;
DataView dv = tILEDataSet.vwTILEAdmin.DefaultView;
vwTILEAdminBindingSource.Filter =
string.Format(@"PdcProductName LIKE '%{0}%' OR LabelDescription LIKE '%{0}%' OR LabelProductName LIKE '%{0}%'",
tb.Text.Trim().Replace("'", "''"));
dataGridView1.Refresh();
}
:私は、グリッドを検索するために使用されるテキストボックスを有する
sql.Append(@"UPDATE [dbo].[LabeledProducts]
SET [PdcProductName] = @pdcProd
,[LabelProductName] = @lblProd
,[LabelDescription] = @lblDesc
,[Power] = @pwr
,[Fabrication] = 0
,[UL_File_Number] = ''
,[PrePrintedSerial] = 0
,[ShowOrderOnLabel] = 0
,[PrivateLabelLogoId] = @plid
,[AgencyImageId] = @aid
,[WireDiagConfigId] = @wid
WHERE PdcProductName = '").Append(pdcProductName).Append("'");
using (SqlCommand command = new SqlCommand(sql.ToString(), printConfigTableAdapter.Connection))
{
if (vwTILEAdminTableAdapter.Connection.State != ConnectionState.Open)
vwTILEAdminTableAdapter.Connection.Open();
LabeledProductsDataTableAdapter.UpdateCommand = command;
LabeledProductsDataTableAdapter.UpdateCommand.Parameters.AddWithValue("@pdcProd", txtPdcProdName.Text);
LabeledProductsDataTableAdapter.UpdateCommand.Parameters.AddWithValue("@lblProd", txtLabeledProd.Text);
LabeledProductsDataTableAdapter.UpdateCommand.Parameters.AddWithValue("@lblDesc", txtLabelDesc.Text);
LabeledProductsDataTableAdapter.UpdateCommand.Parameters.AddWithValue("@pwr", txtPower.Text);
// we need ulfilename and mod
LabeledProductsDataTableAdapter.UpdateCommand.Parameters.AddWithValue("@plid", LogoId);
LabeledProductsDataTableAdapter.UpdateCommand.Parameters.AddWithValue("@aid", AgencyId);
LabeledProductsDataTableAdapter.UpdateCommand.Parameters.AddWithValue("@wid", WireId);
DataTable dt = new DataTable();
int rowsAffected = LabeledProductsDataTableAdapter.Update(dt);
rowsAffected = command.ExecuteNonQuery();
dataGridView1.Refresh();
//dataGridView1.DataSource = tILEDataSet.vwTILEAdmin;
//this.vwTILEAdminBindingSource.ResetBindings(true);
}
DataSourceを設定した行のコメントを外すと、更新されたビューが表示されますが、バインディング元のフィルタを生成するために使用されたテキストボックスは機能しなくなりました。私はテキストボックスに何を入力するかにかかわらず。 Text_Changedイベントは呼び出されますが、フィルターはdgvの内容に影響を与えません。
問題をはっきりと理解できるように、まずコードを記入してください。フィルタとは何ですか? – jams
あなたのコードを投稿することができます。 – BizApps
vwTILEAdminBindingSource.Filter = \t \t \t \t String.Formatの(@ "PdcProductName LIKE '%{0}%' OR LabelDescription LIKE '%{0}%' OR LabelProductName LIKE '%{0}%'"、 \t \t \t \t tb.Text.Trim()。Replace( "'"、 "' '")); \t \t \t dataGridView1。リフレッシュ(); – Gary