0

我在 asp.net 中有两个复选框列表,

第一个列表包含所有水果名称,第二个列表只有几个水果名称。

列表正在使用 sqldatasource 从数据库中填充

现在我需要做一些事情,以便所有水果的第一个列表应该只包含不在列表 2 中的水果

这是代码先生,

private void AllFruitsNames()
{
    using (SqlDataSource ds = new SqlDataSource(ConnectionString(), "SELECT FruitName FROM FruitTable"))
    {
            CheckBoxList1.DataSource = ds;
            CheckBoxList1.DataTextField = "FruitName";
            CheckBoxList1.DataBind();
    }
}

private void PopulateOnlyFewFruitsNames(int crateID)
{
    CheckBoxList2.Items.Clear();

    using (SqlDataSource ds = new SqlDataSource(CS(), "SELECT FruitName FROM FruitTable Where crateID ='" + crateID + "'"))
    {
            CheckBoxList2.DataSource = ds;
            CheckBoxList2.DataTextField = "FruitName";
            CheckBoxList2.DataBind();
    }
}

我如何平衡水果,就好像水果在第二个复选框列表中一样,那么它应该从复选框列表 1 中删除

4

1 回答 1

0

看来您有想要在第二个列表中出现的水果的 ID。

只需从第一个查询中排除所有具有此 ID 的水果:

"SELECT FruitName FROM FruitTable WHERE crateID NOT IN(" + String.Joing(",",crateIDList) + ")"

顺便说一句:您真的不应该以这种方式构建 SQL 查询。它们容易受到 sql 注入的影响。请改用参数化查询。这是有关该主题的文章:使用 SQLDataSource 的参数化查询

于 2013-05-09T15:57:27.033 回答