我正在使用sql数据源和一个checkboxlist来过滤datalistview。 我想从后面的代码为sqldatasource创建一个参数,并使用SQL IN来过滤datalistview行。 当我在复选框列表中选中1复选框时,一切正常... 但是当我检查多个复选框时,datalist视图不会获取任何数据。 这是我对sql datasource的选择代码:
protected void DS_subgroupID_changed_Selecting(object sender,SqlDataSourceSelectingEventArgs e)
{
List<String> selected = new List<String>();
foreach (ListItem item in CheckBoxList_subgroup.Items)
if (item.Selected)
{
selected.Add(item.Value);
}
String commaselect = String.Join(",", selected.ToArray());
e.Command.Parameters["@product_subgroup"].Value = commaselect;
}
这是我的sqldatasource控件:
<asp:SqlDataSource ID="DS_subgroupID_changed" runat="server"
ConnectionString="<%$ ConnectionStrings:nimrokhDBConnectionString %>"
SelectCommand="SELECT * FROM [tbl_product] WHERE (([product_group] = @product_group) AND ([product_subgroup] IN (@product_subgroup)))"
OnSelecting="DS_subgroupID_changed_Selecting">
<SelectParameters>
<asp:ControlParameter ControlID="radio_list_group" Name="product_group" PropertyName="SelectedValue" Type="String" />
<asp:Parameter Name="product_subgroup" />
</SelectParameters>
</asp:SqlDataSource>
我有一个表子组,其中包含subgroupID作为int和subgroupname, 我有一个表产品,其中包含子组以存储子组ID,但这是在nvarchar中。我想知道这是否会导致问题。因为我的checkboxlist值设置为subgroupID form subgroup table。
我乐于助人。 谢谢你们。