фильтр автоматического поиска без преобразования в DataTable - PullRequest
0 голосов
/ 27 апреля 2011

Привет, у меня есть текстовое поле и вид сетки.Могу ли я узнать, каков наилучший способ иметь что-то типа в текстовом поле, и он автоматически фильтрует представление сетки на основе ключевого слова, например Имя

, я сделал это успешно, но с условием, только если оно преобразовано в 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.Спасибо

Ответы [ 2 ]

0 голосов
/ 27 апреля 2011

Вы можете попробовать подход Linq следующим образом:

List<Course> courses = (from i in course.Get() 
                        select new Course() {
                             // Set your property value here.
                        }).ToList();

bsCourse.DataSource = courses;
0 голосов
/ 27 апреля 2011

Я обычно отфильтровываю, какие строки скрывать, используя регулярные выражения. В этом примере я использовал UltraGrid (Infragistics), но процедура, вероятно, будет примерно такой же, как для сетки.

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;
            }
        }
    }
}

Возможно, это не самый лучший способ (особенно не для очень больших сеток с большим количеством строк), но он работает для меня.

...