В моей БД есть несколько таблиц, которые содержат ссылки на пару ключ-значение:
типы телефонных номеров:
- 1 - Дом
- 2 - Работа
- 3 - мобильный
- 4 - Факс
и т.д.
Итак, у меня есть таблица для типов, и когда они используются в других таблицах, они ссылаются на значение int как внешний ключ. Когда я их вытаскивал, я хранил их как keyvaluepair<int, string>
предметов в классе, который их использует.
Когда мне нужно было получить их список, я думал, что просто создам их список <>, а не использую два разных типа данных для получения одинаковых данных.
Моя проблема возникла, когда мне нужно заполнить раскрывающийся список в виде сетки, когда я использую бит edittemplate. Если я использую источник данных для его извлечения, он будет писать [1 Home] в тексте, а не ставить int в качестве значения и Home в качестве отображаемого текста.
Полагаю, у меня вопрос из нескольких частей.
One:
Я что, глупый? Это действительно плохой способ вывести данные и сохранить их (часть ключевой пары)? Должен ли я просто хранить все это в виде данных? Я не хотел помещать все это в датируемые. Я получил свой DAL для моего BLL и попытался инкапсулировать все как объекты или List<>
объектов, а не как таблицы всего. В большинстве случаев это работало хорошо.
Два:
Если я использовал какой-то объект, а не набор данных для привязки к моему источнику данных объекта для выпадающего списка, как я могу установить текущее выбранное значение, вместо того, чтобы оно просто выделило первый элемент в списке?
EDIT
Как указывалось ниже, я был идиотом, и мне просто нужно было установить DataValueField и DataKeyField.
Чтобы привязать выпадающий список, мне просто нужно было сделать:
SelectedValue='<%# DataBinder.Eval(Container, "DataItem.PhoneType.Key") %>'
Причина, по которой я не увидел это сразу, заключалась в том, что он не отображался в моем интеллектуальном значении, но когда я его набирал вручную, он работал.