Источники данных для грида (.NET)

💡 Усі статті, обговорення, новини про .NET — в одному місці. Приєднуйтесь до .NET спільноти!

У меня простое приложение которое состоит из двух вкладок с гридами:

на первой пользователь отмечает необходимые строки (в них меняется булевое поле Cheked на true)

на второй вкладке та же фигня), но отфильтрована по Cheked == true

Для каждого грида я использую свой dataset, команды fill разнятся только Cheked == false & true соответсвенно.

На сколько это правильно -, а скорее всего нет) и как можно обойтись 1-м dataset’om?

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дык эта... один грид и две кнопки: первая кнопка делает фильтр в DefaultView как string.Empty, вторая — «Cheked ==true». В гриде динамически будет все фильтроваться. И будет реально тебе один источник данных.

Если хочешь большего счастья, и чтобы твой продукт выглядел как конфетка — раскрути начальство на более нормальные контролы, например www.devexpress.com/.../WinForms/Grid

to @HT0x@:

правильно, я имел в виду 2 вкладки с гридами

Ну, один источник не в плане ссылки, а в плане значения, может неточно выразился:) А обновится — ну если топикстартер имел ввиду вкладки а-ля таб пэйджы — то отлавливать событие переключение табпэйджа (я понял, что в текущий момент виден только один грид). Так, а галку в строке грида поставил (= изменил булевое поле) — в стандартном гриде изменил текущую позицию строки — данные в таблицу проапдейтились. Это изменение попадет в ее копию, если ее скопировать. Разве не так?

Чуть протупил, но суть осталась: цепляешься на событие смены вкладки, отлавливаешь событие перехода на вторую вкладку, по событию — делаешь из первой таблицы вторую, устанавливаешь ей фильтр в DefaultView, переустанавливаешь datasource второго грида и рефрешишь. Типа того, если данные должны отличаться ТОЛЬКО фильтром.

Не знаю всей задачи, но стоит обратить внимание на свойство DefaultView у дататаблы:
msdn.microsoft.com/...efaultview.aspx
Сделать Fill, взять из датасета таблицу и создать вторую дататаблу из нее методом Copy () (ИМХО, Copy копирует структуру и данные, Clone () — Только структуру, пишу по памяти в, а вдруг ошибся). У первого грида источник данных — первая таблица, у второго — ее копия. Далее, берешь свойство DefaultView у второй таблицы, и устанавливаешь там фильтр. И в реалтайме ты легко сможешь манипулировать представлением данных. А также можешь управлять и сортировкой, без лишнего SQL запроса — сразу в коде, перформанс — очень хороший, поскольку все будет без запроса в базу, а на закешированных данных.
А вообще, типизированные датасеты, которые строит Студия — это зло.
Это даст возможность использовать один источник данных для обоих гридов, а ты сможешь управлять сортировкой и фильтрацией
Также, если грид — не стандартный, а сторонних разработчиков (типа DevExpress xtragrid) — это можно легко сделать через GridView (это — представление данных, которое отобразится в гриде).

Типа того:)

Підписатись на коментарі