我发现有关如何过滤我在Windows窗体的数据网格视图中的列表的问题。
基本上,我有一个文本框,我希望当我在其中输入值时,它将过滤数据网格视图。
我没有任何错误,但是当我尝试在文本框中写入文本时,网格视图保持不变并且不会过滤任何内容。
以下是我的FormLoad(填充gridview的地方)
private void Transactions_Load(object sender, EventArgs e)
{
List<LogsViewModel> logs = sr.GetTransactions().ToList();
dgvTransactions.DataSource = sr.GetTransactions().ToList();
}
以下是我在文本框中输入文字时:
private void txtAccountID_TextChanged(object sender, EventArgs e)
{
BindingSource bs = new BindingSource();
bs.DataSource = dgvTransactions.DataSource;
bs.Filter = dgvTransactions.Columns[1].HeaderText.ToString() + " LIKE '%" + txtAccountID.Text + "%'";
dgvTransactions.DataSource = bs.DataSource;
}
请帮忙!感谢
答案 0 :(得分:-1)
您需要在DataBind()
事件中调用txtAccountID_TextChanged()
方法。
private void txtAccountID_TextChanged(object sender, EventArgs e)
{
BindingSource bs = new BindingSource();
bs.DataSource = dgvTransactions.DataSource;
bs.Filter = dgvTransactions.Columns[1].HeaderText.ToString() + " LIKE '%" + txtAccountID.Text + "%'";
dgvTransactions.DataSource = bs.DataSource;
dgvTransactions.DataBind();
}
我无法对此进行测试,但在您按Enter
键或导致TextBox
失去焦点之前,它仍然无法更新。
答案 1 :(得分:-1)
private void txtAccountID_TextChanged(object sender, EventArgs e)
{
(dgvTransactions.DataSource as DataTable).DefaultView.RowFilter = string.Format("Field = '{0}'", textBoxFilter.Text);
}
&#13;