加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 错误:SelectedValue无效,因为它在项目列表中不存在

发布时间:2020-12-16 03:32:22 所属栏目:asp.Net 来源:网络整理
导读:我有一个Gridview绑定到ObjectDataSource(objStudentDetails).在Gridview的编辑/插入模式中,其中一个字段是DropDownList,它从查找表中获取它的选择列表选项.我将此DropDownList绑定到另一个表示查找表的ObjectDataSource控件(objStateList).只要objStudentDe
我有一个Gridview绑定到ObjectDataSource(objStudentDetails).在Gridview的编辑/插入模式中,其中一个字段是DropDownList,它从查找表中获取它的选择列表选项.我将此DropDownList绑定到另一个表示查找表的ObjectDataSource控件(objStateList).只要objStudentDetails ObjectDataSource中的值与objStateList ObjectDataSource中的某个值匹配,它就可以正常工作,至少在非空字符串值的情况下是这样.

objStateList具有这些值(来自存储的proc加载它 – 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结果集中,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>

有任何想法吗?

解决方法

首先将DropDownLists的AppendDataBoundItems属性设置为true.接下来,通过添加以下< asp:ListItem>来添加NULL ListItem.每个DropDownList的元素,以便声明性标记看起来像:

<asp:DropDownList ID="Categories" runat="server"
    DataSourceID="CategoriesDataSource" DataTextField="CategoryName"
    DataValueField="CategoryID" SelectedValue='<%# Bind("CategoryID") %>'
    AppendDataBoundItems="True">
    <asp:ListItem Value="">[nothing selected]</asp:ListItem>
</asp:DropDownList>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读