Фильтрация связанных данных в DataGridView - PullRequest
1 голос
/ 04 августа 2011

У меня есть DataGridView, который извлекает данные из пары таблиц аналогично этой установке. Работает отлично. Хороший пост и ответ. Продолжая приведенный в этом посте пример, я теперь хочу создать фильтр, который выдает все транзакции в DataGridView, которые применяются к конкретной учетной записи, с помощью параметра LIKE в описании учетной записи.

У меня есть решение: проверить описание таблицы в таблице счетов и получить значение IDAccount, а затем использовать это значение в фильтре DataGridView, но я надеялся, что будет более автоматизированный способ использования привязок.

Есть идеи? Спасибо за ваши предложения.

Редактировать : Предположим, у меня есть элемент управления TextBox AccountDescriptionBox, я хотел бы иметь возможность сделать что-то вроде

dataGridView1.Filter = string.Format("{0} LIKE '{1}'", "IDAccount", AccountDescriptionBox.Text);

Очевидно, это не сработает, поскольку IDAccount является целым числом, а не строкой. Решение, которое я упомянул выше -

string filter = string.Empty;
Regex searchTerm = new Regex(Regex.Escape(AccountDescriptionBox.Text).Replace('\\', '.'), RegexOptions.IgnoreCase);
var accts = from acct in dataSet1.Accounts
            let matches = searchTerm.Matches(acct.Description)
            where matches.Count > 0
            select acct.ID;
for (int i; i < accts.Count() - 1; i++)
{
    filter += string.Format("IDAccount = {0} OR ",accts.ElementAt(i));
}
filter += string.Format("IDAccount = {0}",accts.Last());
dataGridView1.Filter = filter;

Это работает, но громоздко. Я бы предпочел сделать это через привязки, если есть способ.

Ответы [ 2 ]

1 голос
/ 04 августа 2011

Проверьте класс DataView. Он позволяет сортировать и фильтровать записи, а также выполнять простые SQL-подобные манипуляции.

0 голосов
/ 17 августа 2011

Я не верю, что есть способ сделать это напрямую с помощью привязки данных. Я разместил решение в виде редактирования в ответ на комментарии @ CodeBlend.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...