【问题标题】:Populating and deleting items from a database table by looping through checkedlistbox通过循环检查列表框从数据库表中填充和删除项目
【发布时间】:2011-03-11 16:20:55
【问题描述】:

我要做的是根据第一个选中列表框中的所选项目填充第二个选中列表框,并在第一个框中未选中父项时从数据库中删除这些项目。我可以通过仅循环遍历 选中 项来填充第二个框,但是,如果我要从表中删除它们,我还需要包括未选中的项。这是我目前拥有的代码:

        for (int i = 0; i < ckbObjectives.Items.Count; i++)
        {
            objectiveTableAdapter.ClearBeforeFill = false;

            if (ckbObjectives.GetItemChecked(i))
            {
                this.objectiveTableAdapter.FillByParentObjective((CWSToolkitDataSet.ObjectiveDataTable)cWSToolkitDataSet.Tables["ChildObjectives"], Convert.ToInt32(((DataRowView)ckbObjectives.Items[i])[ckbObjectives.ValueMember].ToString()));
            }
            else
            {
                this.objectiveTableAdapter.Delete((CWSToolkitDataSet.ObjectiveDataTable)cWSToolkitDataSet.Tables["ChildObjectives"], Convert.ToInt32(((DataRowView)ckbObjectives.Items[i])[ckbObjectives.ValueMember].ToString()));
            }
        }

        cblSubObjectives.DataSource = cWSToolkitDataSet.Tables["ChildObjectives"];
        cblSubObjectives.DisplayMember = "Title";
        cblSubObjectives.ValueMember = "ObjectiveID";

我没有收到任何错误,但是第二个选中的列表框没有被填充。任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 您是否已单步执行代码?您的代码是否到达FillByParentObjective?这是 WPF、Silverlight、Winforms、Webforms 吗?
  • 这是 Visual Studio 2010。不,我检查检查项目的 if 语句返回 false,无论检查项目。编辑:我也尝试过if (ckbObjectives.GetItemCheckState(i) == CheckState.Checked),它在检查项目时也返回 false。

标签: c# sql loops checkedlistbox


【解决方案1】:

假设您正在检查正确的事情,这应该可以工作。

您能否仔细检查您正在循环的 CheckedListBox,并确保您得到正确的响应:

for (int i = 0; i < ckbObjectives.Items.Count; i++)
{
    MessageBox.Show(String.Format("{0}: {1}", 
                    ckbObjectives.GetItemText(ckbObjectives.Items[i]),
                    ckbObjectives.GetItemCheckState(i).ToString())); 
}

我仍然不确定您是否使用 WinForms/WebForms/WPF 等,但请将上面的 MessageBox.Show 替换为最适合输出的内容。这至少可以确保您查看的是正确的当前数据。

【讨论】:

    【解决方案2】:

    设置 DataSource 属性后,通常需要在 CheckedListBox 上调用 DataBind() 才能显示其中的数据。有帮助吗?

    【讨论】:

    • 不,问题实际上出在我的 if 语句逻辑中。如果我只遍历选中的项目,我可以使用与您在上面看到的代码非常相似的变体来添加它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    相关资源
    最近更新 更多