我有以下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开始的事实有关?
有什么建议吗?
答案 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>
我需要做同样的事情