Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Фильтрация данных, полученных через odbcDataAdapter 
:(
    Опции темы
Nastya
Дата 4.10.2004, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: 2
Всего: 44



Извените, но продолжаю мучать вопросами по .Net и базам.
С меня пиво smile.gif , и можн опотом будет сделать небольшой F.A.Q.

Мне надо фильтровать данные в DataSet точнее их отображение в DataGrid. Решаю эту проблему не очень красиво.
У odbcDataAdapter в SelectCommand ставлю where и добавляю параметра. Потом меняю значение параметров, очищаю dataset и делаю заного его Fill.
Работает, но тормозит (что в общем меня не удивляет smile.gif)
Есть идеи как решить эту проблему «кулюторно»?

И не причастен ли к этому некий класс DataView, если да, то каким боком он крепится.



--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
Kurt
Дата 4.10.2004, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


Профиль
Группа: Участник Клуба
Сообщений: 1662
Регистрация: 22.8.2003
Где: Краснодар

Репутация: 20
Всего: 36



Да. Можно через DataView. Класс DataView представляет собой отображение данных некоторой таблицы (вроде, даже таблиц, но точно не помню.. smile.gif)
Для того, чтобы наш DataGrid, отображал строки по некоторому фильтру, можно сделать так:
1) создать объект DataView;
2) настроить его;
3) назначить его в качестве DataSource нашего DataGrid'a.

У DataView есколько конструкторов, но лично мне проще использовать такой:
Код
DataView dw = new DataView(<объект типа DataTable>);

Чтобы заствить все это дело фильтровать, надо заполнить св-во RowFilter.
Например, так:
Код

dw.RowFilter="column1<100 and column2='Hello, World!'";
//column1, column2 - столбцы таблицы.

Также, можно сделать так, чтобы столбцы были отсортированны. Для этого используется св-во Sort. For example:
Код

dw.Sort="c1 desc"
//ессно, можно asc..

В принципе, все. Меняем вышеописанные св-ва - получаем новое представление таблицы.
Итого:
Код

..
OleDbDataAdapter dAdapt=..
..
DataSet ds = new DataSet("myDS");
..

dAdapt.Fill(ds, "table1");
DataView dw = new DataView(ds.Tables["table1"]);
dw.RowFilter= "c1<10000000 and c2='Hello, World!'";
dw.Sort = "c1 desc";
DataGrid1.DataSource = dw;
..
//изменяем представление
dw.RowFilter = "c1>500";
//в таблице все авт-ки изменится


Можно еще использовать DataSet.Select(..); но он возвращает массив строк, его сложнее использовать вместе с DataGrid.
Ну, теперь точно все. smile.gif

З.Ы.
Цитата
У odbcDataAdapter в SelectCommand ставлю where и добавляю параметра.

Кошмар. Это ты каждый раз делаешь запрос к базе..
З.Ы.Ы.
Тебе это надо?.. Тады где мое пиво? smile.gif



--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
Nastya
Дата 8.10.2004, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: 2
Всего: 44



Цитата
З.Ы.Ы.
Тебе это надо?.. Тады где мое пиво?

Хоть в какой город пиво везти?

Так, если без флайма.
В чем принципиальное отличае между DataSet и DataView? Когда, что вюбирать? DataView - позваляет брать данные только для чтения?


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
Kurt
Дата 8.10.2004, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


Профиль
Группа: Участник Клуба
Сообщений: 1662
Регистрация: 22.8.2003
Где: Краснодар

Репутация: 20
Всего: 36



Цитата
В чем принципиальное отличае между DataSet и DataView? Когда, что вюбирать?

Хм.. Можно, конечно, пофилософствовать на эту тему, но честно признаюсь - просто не задумывался как-то. smile.gif
имхо, DataView просто обертка вокруг DataSet'a. DataSet содержит локальную копию твоей БД, отслеживает изменения etc, а DataView служит для отображения этих данных.
Поэтому, если необходимо изменять вид представления данных пользователю (что часто бывает..), то нужно использовать DataView, иначе - можно DataSet напрямую. Но это, повторюсь, IMHO.

Цитата
DataView - позваляет брать данные только для чтения?

Нет. Если поиграться со св-вами AllowNew, AllowEdit, AllowDelete - появляется возможность проведения операций по добавлению/удалению/редактированию черезе DataView.

[offtop]
Цитата
Хоть в какой город пиво везти?

Краснодар. Говорят, южная столица Росии. biggrin.gif
[/offtop]


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
Nastya
Дата 10.10.2004, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: 2
Всего: 44



Ну все еду в Краснодар smile.gif
Спасибо, за квалифицированные ответы , но вопросы еще будут. В особокрупном количестве, если никто не против


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.2098 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.