1

私は次のasp.netDropDownListを持っています:

<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であり、それは私が呼び出しているDBに確実に存在します。

インターネットや他のフォーラムで引用されているように、この問題の解決策を試しましたが、それでも同じエラーが発生します。これは、SelectedValueが-1から始まるという事実と関係があると思いますか?

助言がありますか?

4

1 に答える 1

-2

「選択」が送信されたデータセットの最初の行になるようにすることにしました。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>

私は同じスーツをする必要があります

于 2012-04-25T10:02:42.530 に答える