【发布时间】:2010-11-21 23:34:04
【问题描述】:
我有一个绑定到 ObjectDataSource (objStudentDetails) 的 Gridview。在 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
或者它可以有这个结果集(状态是一个空字符串 - ''):
FirstName LastName State
----------- ---------- -----
jenny johnson
在第一个 objStudentDetails 结果集中,EditItemTemplate 中的状态 DropDownList 显示正常。然而,在第二个结果集中,我得到了这个错误:
'ddlEditState' has a SelectedValue which is invalid because it does not exist in the list of items.
Parameter name: value
我认为,由于我的查找表有一个带有空字符串的值,因此带有空字符串状态的 objStudentDetails 值会匹配,但有些事情并没有按照我期望的方式工作。
这是来自 Gridview 的 EditItemTemplate 代码:
<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>
有什么想法吗?
【问题讨论】:
标签: asp.net gridview drop-down-menu edititemtemplate