DropDownList SelectedValue无效,因为它不存在于项列表中

时间:2012-04-25 09:53:06

标签: asp.net drop-down-menu selectedvalue

我有以下asp.net DropDownList:

<asp:DropDownList ID="ddlRole" runat="server" DataSourceID="dsRole"
        DataTextField="RoleCode" DataValueField="ID" Font-Names="Verdana" Font-Size="11px"
        ForeColor="#2D2D2D" ClientIDMode="Static" Width="120px" CssClass="selectedRole"
        OnDataBound="ddlEntity_DataBound" AppendDataBoundItems="true" >
        <asp:ListItem Value="-1">--- Select ---</asp:ListItem>
</asp:DropDownList>
<asp:ObjectDataSource ID="dsRole" runat="server" SelectMethod="GetList" TypeName="Roles"
     OldValuesParameterFormatString="original_{0}"></asp:ObjectDataSource>

我得到“SelectedValue无效,因为它不存在于项目列表中”错误,说明'value'不正确。我正在引用的ID是1,它肯定存在于我正在调用的数据库中。

我已经尝试过在互联网和其他论坛上引用的这个问题的解决方案,但我仍然得到同样的错误。我假设这与我的SelectedValue从-1开始的事实有关?

有什么建议吗?

1 个答案:

答案 0 :(得分:-2)

我决定这样做,“Select”是传输数据集中的第一行。你可以在MSSQL中使用UNION来完成它。

请求结果如下:

SELECT '-1' AS id, 'Select' AS name UNION ALL SELECT id, name FROM users

必须给列别名,否则DropDownList根本就不明白id在哪里,以及名称在哪里

 <asp:DropDownList ID="MainCat" runat="server" AutoPostBack="True" 
         DataSourceID="SqlDataSource1" DataTextField="name" DataValueField="id">
 </asp:DropDownList>

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
         ConnectionString="<%$ ConnectionStrings:ConnectionString1%>" 
             SelectCommand="SELECT id,name FROM users">
 </asp:SqlDataSource>

我需要做同样的事情