我有一个文本框和一个gridview。我可以知道在文本框中输入内容的最佳方法是什么,它会根据关键字自动过滤gridview,例如名称
我已成功完成了这项工作,但只有在转换为dataTable时才具备条件
bsCourse.DataSource = linqHelper.ToDataTable(course.Get() as List<Course>);
gvCourse.DataSource = bsCourse;
private void txtSearch_TextChanged(object sender, EventArgs e)
{
string input = txtSearch.Text.Trim().ToLower();
if (input.Length > 0)
bsCourse.Filter = "Name like '" + input + "%'";
else
bsCourse.Filter = "";
}
如果没有将数据转换为数据表进行此自动过滤搜索,会有更好的效果吗? 我正在使用linq来sql。 感谢
答案 0 :(得分:0)
我通常使用正则表达式过滤掉要隐藏的行。在这个例子中,我使用了UltraGrid(Infragistics),但是对于gridview来说,程序可能是相同的。
private void searchBox_TextChanged(object sender, EventArgs e)
{
if (gridUsers.Rows.Count > 0)
{
foreach (UltraGridRow row in gridUsers.Rows)
{
if (Regex.IsMatch(row.Cells[1].Value.ToString(), searchBox.Text, RegexOptions.IgnoreCase))
{
gridUsers.Rows[indexCounter].Hidden = false;
}
else
{
gridUsers.Rows[indexCounter].Hidden = true;
}
}
}
}
这可能不是最好的方式(特别是对于有很多行的非常大的网格而言),但它对我有用。
答案 1 :(得分:0)
你可以这样尝试Linq方法:
List<Course> courses = (from i in course.Get()
select new Course() {
// Set your property value here.
}).ToList();
bsCourse.DataSource = courses;