我想根据文本框的每个单词过滤网格视图 . 每当我连续添加一个单词时,过滤器必须搜索数据网格 . 但是在下面的代码中,它仅根据最后一个单词返回搜索结束 . 请注意我使用的是数据网格视图 .
任何建议
private void textBox1_TextChanged(object sender,EventArgs e){
int count = textBox1.Text.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Count();
label68.Text = count.ToString();
string[] nameParts = textBox1.Text.Split(' ');
int cnlp = 1;
while (cnlp <= count)
{
string loopcount = nameParts[(cnlp - 1)];
lbtest5.Text = loopcount.ToString();
var bd = (BindingSource)dgvShopDrawings.DataSource;
var dt = (DataTable)bd.DataSource;
dt.DefaultView.RowFilter = string.Format("DrawingID like '%{0}%' or title like '%{0}%' or level like '%{0}%'", lbtest5.Text.Replace("'", "''"));
dgvShopDrawings.Refresh();
ShopDrawingRecordCount = dt.Rows.Count;
SdDgvStatusCount.Text = String.Format("Records In {0} / {1} ", dgvShopDrawings.Rows.Count, ShopDrawingRecordCount);
cnlp = cnlp + 1;
}
}
2 回答
您每次迭代都要替换RowFilter,因此cource只显示最后一次 .
尝试这样的事情:
RowFilter
返回最新应用的过滤器,这就是您获取最后一个应用过滤器的原因(文本框中的最后一个单词) . 使用in
condtion为RowFilter
而不是=
. 在循环中创建in
条件兼容字符串并将其应用于循环外的数据表 .尝试相应地更改代码 . 我用
in
条件更改了发布的代码 . 可能是一些编译错误,因为我没有编译 .