![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Legolas |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 14.2.2007 Репутация: 2 Всего: 5 |
Возникла небольшая проблемка при написании одного приложения: пытаюсь наладить поиск в таблице dataGridView по различным параметрам. То есть в таблице находится фильмы со следующими свойствами: Название Жанр Размер Длительность. Создаю комбобоксы к с параметрами поиска - например, искать по Жанру. Проблема состоит в том, что при выборе нескольких параметров поиска одновременно, в таблицу выводятся все фильмы хоть как-то попадающие по критерию
, а хотелось бы чтобы происходило какое-то "отсеивание". Пример: Ищу фильмы Комедия, DVD5 Выводятся все фильмы с жанром комедии и все фильмы DVD5 (включая другие жанры), а хотелось бы среди комедий найти все DVD5, или наоборот. Есть ли какие-нибудь идее по поводу. Спасибо. |
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
[Б]Леголас[/Б], код в студию!
А вообще поиск удобно делать при помощи метода Select класса DataTable. |
|||
|
||||
| Legolas |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 14.2.2007 Репутация: 2 Всего: 5 |
|
|||
|
||||
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: нет Всего: 146 |
Legolas, достаточно инвертировать логические операнды
Лучше помещать проверку на пустую строку в начало, что бы не делать в пустую поиск по массиву. |
|||
|
||||
| Legolas |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 14.2.2007 Репутация: 2 Всего: 5 |
sTa1kEr, насчет пустой строки - да, но при инвертировании эффект остается таким же - выводятся куча фильмов подходящих хотя бы одному критерию, в то же время, другие критерии этих фильмов противоречат поисковому запросу.
|
|||
|
||||
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: нет Всего: 146 |
Legolas, подождите... в превый раз не внимательно посмотрел.
1. У вас в коде слишком много закрывающихся фигурных скобок. 2. Зачем этот цикл? Вы же итак сразу по всем строкам ищите? 3.
Т.е. если условие не прошло, то всеравно добавляете строку в грид? Тогда у вас должны всегда выводится все фильмы. 4. Имхо лучше проверять колличество строк в гриде: if (dataGridView1.Rows.Count == 0) |
|||
|
||||
| Legolas |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 14.2.2007 Репутация: 2 Всего: 5 |
1. со скобками всё в порядке 2. если ты внимательно смотрел код, то там сначала разбиваю на строки,а затем на отдельные элементы строк. массив parts содержит элементы строки. 3. нет не должны, так как туда выводится фильм если происходил поиск чётко по названию, а не по параметрам. 4. можно и так И всё-таки вопрос остается не решенным - как наладить поиск по параметрам? |
|||
|
||||
| Naum |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 8 Всего: 15 |
Полностью согласен со вторым постом sTa1kErа.
1. 8 открывающих скобок, 9 закрывающих. 2. Так я и не понял зачем нужна переменная a. Или ты просто хочешь повторить поиск столько же раз, сколько и категорий. Но зачем? Ведь все категории ты пытаешься проверить при первом же проходе в длинном булевом выражении. 3. Для наглядности сделаем следующее:
Это длинное логическое выражение неверно. Как поправить напишу завтра, извини. Далее
И теперь смотрим, какой у нас получился if
Теперь видно, что DisplayInfo() выполняется в любом случае? 4. Не можно, а нужно. Потому что именно из-за того, что ты неправильно делаешь и вылетает ArgumentOutOfRangeException, которую ты же сам потом ловишь. [/code] -------------------- У нас всего два праздника Новый год и ТЯПница. |
||||||
|
|||||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Legolas, ищем ошибку в своём коде.
-------------------- ![]() |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |