Практика присоединения заголовков к ссылкам - кто как?
От: matumba  
Дата: 04.10.12 09:32
Оценка:
Вопрос стар как мир и касается баз данных, но решается и на уровне языка, так что думаю я в нужном форуме. Вопрос совершенно тривиальный, но каждый мог решить его по-своему.

Поясню сабж: есть сущность (Person для примера), она ссылается на страну: Person.CountryID; Есессно, на клиенте хочется видеть название страны. Причём видеть и в списках персон, и в диалоге редактирования(ДР) одной персоны.
Если список стран — сложный и большой (да ещё и часто меняющийся), загружать его на клиента нельзя — вот и имеем два варианта: страны только на сервере и страны, закэшированные на клиенте.


Варианты для списка персон

  1. Загружаем заранее список стран, а при показе списка персон "мэпим" (скажем, через value converter) ИД страны на её название.
  2. Делаем на клиенте LEFT JOIN к странам, а к Person добавляем поле CountryName. (похоже, худший, но вполне рабочий вариант)
  3. Делаем как и в предыдущем пункте, но для LEFT JOIN создаём View на сервере, откуда и загружаем данные.



Варианты для ДР персоны

  1. Загружаем заранее список стран, а в ДР создаём комбобокс для редактирования. С сервера загружаем единственную запись персоны прямо из таблицы, тут всё просто.
  2. Для "большого списка стран":
  1. У Person создаём на каждое поле-ссылку — поле-заголовок. Далее пишем на клиенте все LEFT JOIN'ы и заполняем поля-заголовки. Эти поля на ДР показываются в виде Label, а ссылки редактируются через дополнительный popup список.
  2. Как и в предыдущем пункте, но делаем отдельную View на сервере.
  3. У персоны не создаём никаких доп.полей, а заголовки получаем из БД прямо в лэйблы значений. (тоже кажется плохим вариантом, но бывают ограничения, когда Person менять нельзя)


Это варианты, которые я знаю и минусы которых мне известны. Есть ли ещё какие-либо решения? Интересны любые, даже на первый взгляд глупые варианты, ибо задач — море и распальцованные интыпрайзные решения применимы не везде.

PS
Господа вебдизайнеры, у вас не поддерживаются вложенные списки.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.