我想进行搜索,将结果填充到带有LINQ的Gridview。
这是我使用Linq之前的代码,工作正常:
foreach (DataRow dr in dt.Select("Name like '" + txtSearch.Text + "%'"))
{
dtable.ImportRow(dr);
}
在我的linq代码中,我使用bsUser
作为BindingSource。
private void txtSearch_TextChanged(object sender, EventArgs e)
{
string input = txtSearch.Text.Trim().ToLower();
if (input.Length <= 0) return;
IList<User> u = (bsUser.Filter? select?
.Where(x => (x.Name.ToLower().StartsWith(input)
&& (x.RoleId == (int)cbRole.SelectedValue))).ToList());
bsUser.DataSource = u;
}
我遇到的问题是,如果u
返回0行,那么绑定到bsUser
的Gridview将不再有数据。 datasource.count() = 0
有人可以给我一个解决方法或建议我如何解决这个问题吗?
答案 0 :(得分:0)
嗨,我想我已经通过这种方式做到了这一点。看起来很不错..
private void txtSearch_TextChanged(object sender, EventArgs e)
{
string input = txtSearch.Text.Trim().ToLower();
if (input.Length > 0)
bsUser.Filter = "Name like '" + input + "%' AND RoleId = '" + (int)cbRoleSearch.SelectedValue + "'";
else
FilterCBRoleSearch(Convert.ToInt16(cbRoleSearch.SelectedValue));
}