Один вид сетки — два источника данных?

Я работаю над веб-сайтом коллег, и он по ошибке создал сетку, которая показывает TypeID вместо TypeName. Я хочу поставить фактическое ИМЯ типа вместо произвольного идентификационного номера, как у него. Я вижу, что у него на странице два "ObjectDataSource" - один для типа и один для элемента. Items содержит идентификатор TYPE элемента, который находится в источнике данных Items. Он тянет этот идентификатор, чтобы заполнить gridview. Я хочу использовать этот идентификатор, чтобы вытащить ИМЯ из другого источника данных и поместить это ИМЯ в представление сетки для этого конкретного столбца. Можно ли это сделать? Могу ли я использовать два разных источника данных в представлении сетки?


person Kolten    schedule 31.10.2008    source источник


Ответы (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
comment
Спасибо - как-то сам разобрался. (ну, я думаю, учусь), и я только что создал новый ObjectDataSource, который извлекается из обеих таблиц. Когда я модифицировал существующий SQL, я получил несколько ошибок, которых не понял. Создание нового источника данных решило мою проблему, но вы меня на правильном пути :) - person Kolten; 31.10.2008
comment
О, я знаю ошибку, которую я получил - кажется, что при использовании INNER JOIN по какой-то причине он не может автоматически создать оператор INSERT. Поскольку этот оператор INSERT упоминается в другом месте, он не работает. - person Kolten; 31.10.2008