У меня есть 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;
Это работает, но громоздко. Я бы предпочел сделать это через привязки, если есть способ.