0

チェックボックスリストを制御パラメーターとして使用するクエリを使用して、データベースからデータ行を取得したいと考えています。問題は、チェックボックスリストで複数の値を選択すると、ここに示すように 1 つの値しか返されないことです...

<asp:CheckBoxList ID="CheckBoxList1" runat="server" RepeatDirection="Horizontal" DataSourceID="SqlDataSource1" DataTextField="Fruit" DataValueField="Fruit" ></asp:CheckBoxList>
<asp:SqlDataSource runat="server" ID="SqlDataSource1" ConnectionString='<%$ ConnectionStrings:f-StopConnectionString %>' SelectCommand="SELECT [Fruit] FROM [Table_1]"></asp:SqlDataSource>

<br />

<asp:Button ID="Button1" runat="server" Text="Select" OnClick="Button1_Click" />

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource4">
    <Columns>
        <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID"></asp:BoundField>
        <asp:BoundField DataField="Fruit" HeaderText="Fruit" SortExpression="Fruit"></asp:BoundField>
    </Columns>
</asp:GridView>

<asp:SqlDataSource runat="server" ID="SqlDataSource4" ConnectionString='<%$ ConnectionStrings:f-StopConnectionString %>' 
    SelectCommand="SELECT * FROM [Table_1] WHERE ([Fruit] LIKE '%' + @Fruit + '%')">
    <SelectParameters>
        <asp:ControlParameter ControlID="CheckBoxList1" PropertyName="SelectedValue" Name="Fruit" Type="String"></asp:ControlParameter>
    </SelectParameters>
</asp:SqlDataSource>

クエリが読み取られるように複数の選択を渡す方法はありますか:

(WHERE [Fruit] LIKE '%'Apples'%') OR (WHERE [Fruit] LIKE '%'Oranges'%')

どんな助けでも大歓迎です。

4

1 に答える 1

0

私の知る限り、コードを提供していないため、linq (またはエンティティ フレームワーク) を使用してデータベースにクエリを実行したいと考えています。

次に、ユーザーの選択に応じてラムダ式を作成し、それをクエリに渡す必要があります。

ここでラムダ式ツリーを参照してください: http://www.codeproject.com/Articles/17575/Lambda-Expressions-and-Expression-Trees-An-Introdu

これも役立ちます: Entity Framework の Where メソッドでカスタム デリゲート メソッドを使用できますか?

sql select コマンド文字列を渡すだけの場合は、ユーザーの選択に応じてカスタム where 句を作成する必要があります。

于 2013-02-17T20:00:51.643 に答える