如何使用复选框列表向SQL select查询添加多个参数?

时间:2013-02-17 19:24:38

标签: c# asp.net sql-server checkboxlist

我希望使用带有checkboxlist作为控制参数的查询从数据库中检索数据行。问题是复选框列表中的多个选定值仅返回一个值,如此处所示...

Illustration

<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'%')

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

据我了解,由于您没有提供代码,您希望使用linq(或实体框架)来查询数据库。

然后,您需要根据用户选择构建lambda表达式并将其传递给您的查询。

请参阅Lambda表达式树以获取开始: http://www.codeproject.com/Articles/17575/Lambda-Expressions-and-Expression-Trees-An-Introdu

这也有助于: Can I use custom delegate method in Where method of Entity Framework?

如果您只想传递sql select命令字符串,那么您应该根据用户选择构建自定义where子句。