У меня есть 2 таблицы с уникальными идентификаторами, которые можно сопоставить друг с другом (одна таблица поступает из базы данных вне моего приложения, но содержит информацию о тех же сущностях, которые я отслеживаю). Я хочу предоставить пользовательский интерфейс для связи «моих» записей с «другими», чтобы я мог хранить «другие» идентификаторы в своей таблице для соответствующих записей. В двух словах, ключевым элементом пользовательского интерфейса является раскрывающийся список, показывающий доступные (т.е. еще не связанные) записи из «другой» таблицы.
У меня есть сетка для отображения «моих» записей в каждой строке, плюс столбец, показывающий некоторую информацию из связанной записи в «другой» таблице, если таковая имеется. Данные о зданиях и свойствах, поэтому это может выглядеть так:
Building1 Dallas TX Building1_Dallas_TX
Building2 Memphis TN Bldg2_Memphis_TN
Building3 Denver CO
Building4 Seattle WA
Building5 Boston MA Building5_Boston_MA
, где первые 3 столбца показывают некоторую информацию из таблицы "my", а последний показывает соответствующую запись из таблицы "other", где записи уже были связаны, в противном случае - пустое место, где ссылка не была установлена. У моего фактического gridview есть еще несколько столбцов из «моей» таблицы, но этого достаточно, чтобы проиллюстрировать необходимость.
Когда для строки щелкают по Edit (не показан), я хочу иметь возможность редактировать все 4 столбца. Первые 3 являются текстовыми полями; последний столбец должен быть выпадающим списком, показывающим все несвязанные записи из «другой» таблицы, плюс опцию «Неназначенные» (как первый элемент в списке), чтобы записи могли быть "несвязанным" или просто оставленным неназначенным, плюс (для тех строк, для которых уже установлена ссылка) связанный элемент (он "используется", но он должен быть там, чтобы они могли продолжать его использовать) .
Я могу правильно заполнить раскрывающийся список в выделенном фрагменте кода в событии gridview RowEditing (за исключением элемента «Неназначенный», который я добавляю как ListItem в .aspx с параметром AppendDataBoundItems, установленным в значение «true»), и могу установить правильный SelectedValue событие ddl's DataBound, но при обратной передаче, когда я нажимаю кнопку Обновить строку, в ddl больше нет элементов (кроме элемента «Неназначенный»), поэтому ссылка всегда очищается. Если я вручную установлю ссылку, напрямую отредактировав свою таблицу, все будет хорошо, если перейти в режим редактирования - в ddl будут правильные элементы, и он предварительно выберет правильный элемент, но все будет потеряно при обратной передаче обновления. Я пытался повторно связать ddl на разных этапах цикла страницы, но, очевидно, я еще недостаточно хорошо понимаю этот цикл, потому что не могу понять, как заставить выбранный пользователем элемент обновлять мою таблицу.
Я также пытался заполнить ddl командой SqlDataSource SelectCommand, но мне не повезло, включая идентификатор связанных в настоящее время записей в другой базе данных (даже если он доступен в таблице "my", и я установил его как GridView. DataKey и добавьте его как ControlParameter в SelectParameters для SqlDataSource. Без текущей связанной записи в списке элементов ddl я не могу сохранить существующие ссылки.
Я пока не буду отправлять пример кода - это сообщение уже слишком длинное! - в надежде, что решение очевидно из того, что я описал ... Я не думаю, что моя цель странная, но я открыт для убеждения иначе.
Заранее большое спасибо!
Chris