У меня есть выпадающий список внутри DataList EditItemTemplate, питаемый SQLDataSource (см. Ниже). Параметр @panelid устанавливается в коде в событии SQL databinding и, похоже, работает нормально. Содержание точных и то, что я ожидал.ddl Выбранное значение неверная ошибка
Затем я попытался установить выбранное значение с помощью Bind("scopeid")
, что должно быть хорошо. scopeid
и equipmentid
связаны, фактически scopeid
заполняется equipmentid
в нижнем колонтитуле этого же источника данных, поэтому их значения должны соответствовать (и они есть). Это должно нажать scopeid
выбранной записи на выбранный элемент в ddl. Однако при переключении на мой EditItemTemplate я получаю ошибку 'ddlEquipment' has a SelectedValue which is invalid because it does not exist in the list of items. Parameter name: value
. Есть идеи?
<asp:DropDownList class="smallInputddl" ID="ddlEquipment" runat="server" DataSourceID="sqlEditEquipment" SelectedValue='<%# Bind("scopeid")%>' DataTextField="modelnumber" DataValueField="equipmentid" AppendDataBoundItems="true">
</asp:DropDownList>
<asp:SqlDataSource ID="sqlEditEquipment" runat="server" OnDataBinding="sqlEditEquipment_DataBinding" ConnectionString="<%$ ConnectionStrings:ProductionDatabaseConnectionString1 %>"
SelectCommand="select * from tblsls_equipmentscope where proposalnumber in (select proposalnumber from tblsls_cntrlpanel where id = @panelid)">
<SelectParameters>
<asp:Parameter Name="panelid" />
</SelectParameters>
</asp:SqlDataSource>
Чтобы продемонстрировать, вот запрос Sql, чтобы показать связь между scopeid
и equipmentid
. tblsls_cntrlvfd также имеет идентификатор из tblsls_cntrlpanel .:
select e.equipmentid, c.scopeid from tblsls_equipmentscope e
left join tblsls_cntrlvfd c on e.equipmentid = c.scopeid
where proposalnumber in (select proposalnumber from tblsls_cntrlpanel where id = 20)
Результаты:
equipmentid scopeid
----------- --------
9513 9513
9541 9541
9543 NULL
(3 row(s) affected)
Суть в том, что оборудование существует вне в своем собственном маленьком мире, и контролирует в это. Оба привязаны к предложению. Существует также VFD, который связан как с панелью управления, так и с конкретным оборудованием.
Как показано в наборе результатов, идентификатор области также имеет нулевое значение. Думаю, вам нужно это проверить. –
scopeid имеет null, потому что у него нет записи для этого оборудования, и он не должен. Он не пытается вставить нуль в datalist, он пытается нажать 9541 или 9513, в зависимости от того, какую запись я редактирую. Уточнение в моем оригинальном посте. – Crimius