Re[4]: Связка нескольких контролов через DataContext
От: Аноним  
Дата: 23.04.11 19:22
Оценка:
Здравствуйте, Vladek, Вы писали:

V>Здравствуйте, Аноним, Вы писали:



А>>Пока не совсем осознал ваше решение, проблема в том что изначально я не знаю будет ли там text-box и grid, а может будет textbox-combobox.

А>>Т.е. я не могу заранее затачиваться на то какие будут связи, я должен их считать из файла конфигурации и просроить так как написано в конфигурации.
А>>Я просто даю возможность пользователю самому выбрать какие контролы он будет использовать ( что то на подобии CMS ) и хотелось вот использовать синтаксис binding чтобы указывать как их связать.
А>>Т.е. пользователь сам составляет композиции из контролов и устанавливает связи. Т.е. заранее готового объекта Model для его сценария нет, он должен сформироваться динамически.
А>>Пользователь указывает что этот контрол должен брать данные из источника1 , источнику1 передать поля из контрола2,3,4.
А>>Пользователь также может брать готовые композиции например как 1) и 2) и объединить их. Т.е. сделать вариант
А>>3) textbox-datagrid-datagrid, работающих по 1)му и 2му сценарию одновременно.

V>Описанный подход можно приспособить и под этот сценарий, просто используете рекурсивную композицию.

Спасибо, погляжу.

А>>Еще не совсем ясно как быть с фильтром, т.к. фильтр предполагает вызов callback который возвращает true/false подходит элемент или нет, а как быть при частичной загрузке данных, когда все данные из базы нельзя загрузить их там может быть очень много что не хватит ресурсов, нужно чтобы изменение свойства фильтра каждый раз инициировало запрос к бд и считывало новый блок данных.


V>Не вижу проблем, у ListCollectionView есть свойство Filter, не нужно ничего фильтровать вручную. Надо просто поменять фильтр, фильтроваться будут те данные, которые уже загружены — при поступлении новых данных, они тоже будут проходить через новый фильтр.


Допустим у нас есть 100 записей, загружаем в кеш 20 записей, а выводим на экран 10 записей. Есть ключ по которому выдается 3 результата, которые физически расположены в 1й, 50й и 100й записях. При старте кеш будет видеть только первые 20 записей и отфильтрует 1ю запись и в гриде будет выводится одна строчка, хотя должно отображаться 3.
Т.е. как только мы задали ключ должен сразу выполнится запрос к бд и вернуть новый recordset.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.