我有一个datagridview与筛选器进行搜索。如果我更新数据库,然后将dgv重置为数据源,则会丢失我的过滤器。我尝试了ResetBindings,但没有帮助。如果我关闭表单并重新打开所做的更改,我只希望它能够“实时”发生。任何建议表示赞赏。刷新绑定datagridview更新后的过滤器c#
我有一个基于SQL视图的数据集。在这个数据集中有一个基于这个视图的表格。 datagridview绑定到这个表。我有几个控件,包括绑定到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();
}
通过修饰一个或多个绑定控件我保存改变的,其中更新该表进行更改在DGV一排后:
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