У меня есть Gridview, который привязывается к ObjectDataSource (objStudentDetails). В режиме редактирования / вставки Gridview одним из полей является DropDownList, который получает параметры списка выбора из справочной таблицы. У меня есть эта привязка DropDownList к другому элементу управления ObjectDataSource (objStateList), который представляет таблицу поиска. Он работает нормально, пока значение в objStudentDetails ObjectDataSource совпадает с одним из значений в objStateList ObjectDataSource, по крайней мере, в случае непустого строкового значения.
objStateList имеет следующие значения (из хранимого процесса, который его загружает - ID # 6 - пустая строка ''):
StateId State
----------- -----
6
4 AL
1 GA
3 KY
2 TN
Объект objStudentDetails имеет следующие значения (из хранимого процесса, который его загружает):
FirstName LastName State
----------- ---------- -----
tone smith TN
Или может иметь такой набор результатов (State - пустая строка - ''):
FirstName LastName State
----------- ---------- -----
jenny johnson
В первом наборе результатов objStudentDetails состояние DropDownList в EditItemTemplate отображается нормально. Однако во втором наборе результатов я получаю эту ошибку:
'ddlEditState' has a SelectedValue which is invalid because it does not exist in the list of items.
Parameter name: value
Я бы подумал, что, поскольку моя таблица поиска имеет значение с пустой строкой, значение objStudentDetails с пустой строкой для состояния будет соответствовать, но что-то не работает так, как я этого ожидаю.
Вот мой код EditItemTemplate из Gridview:
<EditItemTemplate>
<asp:Panel ID="panEditState" runat="server">
<asp:DropDownList ID="ddlEditState" runat="server" CssClass="GridviewDropdownlist"
DataSourceID="objStateList" DataTextField="State" DataValueField="State"
SelectedValue='<%# Bind("State") %>'
Width="50px">
</asp:DropDownList>
</asp:Panel>
</EditItemTemplate>
И objStateList, который вызывает метод, передающий параметр какой таблицы поиска для запроса:
<asp:ObjectDataSource ID="objStateList" runat="server" SelectMethod="GetDropdownData" TypeName="AIMLibrary.BLL.DropdownData">
<SelectParameters>
<asp:Parameter Name="itemsToGet" DefaultValue="state" />
</SelectParameters>
</asp:ObjectDataSource>
Есть идеи?