0

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

插图

<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(或实体框架)来查询数据库。

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

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

这也有帮助: 我可以在实体框架的 Where 方法中使用自定义委托方法吗?

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

于 2013-02-17T20:00:51.643 回答