我希望使用一个带有checkboxlist作为控制参数的查询从数据库中检索数据行。问题是checkboxlist上的多个选择值只返回一个值,如下所示……
<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'%')任何帮助都将不胜感激。
发布于 2013-02-18 04:00:52
据我所知,由于您没有提供任何代码,所以您希望使用linq (或实体框架)来查询数据库。
然后,您需要根据用户选择构建lambda表达式,并将其传递给查询。
请参阅此处的Lambda表达式树,了解start: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子句。
https://stackoverflow.com/questions/14925091
复制相似问题