Я работаю над веб-сайтом коллег, и он по ошибке создал сетку, которая показывает TypeID вместо TypeName. Я хочу поставить фактическое ИМЯ типа вместо произвольного идентификационного номера, как у него. Я вижу, что у него на странице два "ObjectDataSource" - один для типа и один для элемента. Items содержит идентификатор TYPE элемента, который находится в источнике данных Items. Он тянет этот идентификатор, чтобы заполнить gridview. Я хочу использовать этот идентификатор, чтобы вытащить ИМЯ из другого источника данных и поместить это ИМЯ в представление сетки для этого конкретного столбца. Можно ли это сделать? Могу ли я использовать два разных источника данных в представлении сетки?
Один вид сетки — два источника данных?
Ответы (1)
Если я правильно понимаю, у вас есть два источника данных, которые делают это:
1) SELECT ID, Item, ItemTypeID FROM Item
2) SELECT ID, ItemType FROM ItemTypes
И вы хотите, чтобы имя элемента и тип элемента отображались в вашей сетке.
Чтобы ответить на ваш фундаментальный вопрос, можете ли вы использовать оба источника в сетке: да. Но это не самый эффективный способ выполнения операции, так как вам придется проходить второй источник данных для каждой строки в первом.
Лучшим способом было бы объединить два источника данных вместе и иметь только один.
Измените оператор SELECT для первого источника данных, чтобы он выглядел примерно так:
SELECT i.ID, i.Item, t.ItemType FROM Item i INNER JOIN ItemTypes t ON i.ItemTypeId = t.ID;
person
Stephen Wrighton
schedule
31.10.2008
Спасибо - как-то сам разобрался. (ну, я думаю, учусь), и я только что создал новый ObjectDataSource, который извлекается из обеих таблиц. Когда я модифицировал существующий SQL, я получил несколько ошибок, которых не понял. Создание нового источника данных решило мою проблему, но вы меня на правильном пути :)
- person Kolten; 31.10.2008
О, я знаю ошибку, которую я получил - кажется, что при использовании INNER JOIN по какой-то причине он не может автоматически создать оператор INSERT. Поскольку этот оператор INSERT упоминается в другом месте, он не работает.
- person Kolten; 31.10.2008