Georg_S Ответов: 1

Совместить тест флажок и натурных испытаний для объекта datagridview объект DataTable rowfilter


Я хочу объединить комбинацию rowfilter на 2 столбца. Один столбец является флажком-показывать только те строки, которые проверены, и в то же время применять текстовый фильтр к другому столбцу (строке). Я могу сделать каждый из них по отдельности, но, похоже, не могу справиться с правильным синтаксисом, чтобы объединить фильтр 2 в 1.

Что я уже пробовал:

Мой DataGridView имеет 2 разных столбца, к которым я применяю rowfilter:
1) столбец Checkbox (назовите его "S")
2) Обычный строковый столбец (назовите его " артист")
3) таблицу (назовем ее "ДТ")
4) DataGridView (назовите его " DGV")
и они связаны
DGV.Datasource=DT

' Now I can apply each rowfilter individually to filter either columns that are checked:

dt.defaultview.rowfilter = "S"

' This will successfully show only rows in which the CheckColumn has been checked

dt.defaultview.rowfilter = String.format("{0} LIKE '{1}'", "Artist", strA)

' this successfully shows rows in which the Artist name contains variable strA
' I want to apply both conditions at once, but

dt.defaultview.rowfilter = "S" And String.format("{0} LIKE '{1}'", "Artist", strA)
не работает, я получаю недопустимое исключение приведения
Преобразование из строки "S" В тип "Long" недопустимо.
флажок один является логическим ("S"), а другой, по сути, является строкой

Кто-нибудь знает правильный синтаксис, чтобы заставить эту комбинацию работать вместе?

1 Ответов

Рейтинг:
7

RickZeeland

Я думаю, что вы должны использовать:

dt.defaultview.rowfilter = "S=True AND " + String.format("{0} LIKE '{1}'", "Artist", strA)


Georg_S

Спасибо,
Для справки, я на самом деле использую
Строка.Формат("[{0}] Например '%{1}%'", "художник", стра))
вместо того, что я написал изначально

Главное было то и что должно быть в скобках
Я нашел это
"S и" + String. format {"[{0}] Например '%{1}%'", "художник", стра)
без =True тоже работает

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