c# - 通过循环检查列表框从数据库表中填充和删除项目

标签 c# sql loops checkedlistbox

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

        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";

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

最佳答案

假设您检查的内容正确,这应该有效。

你能仔细检查你正在循环的 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 替换为最适合输出的内容。这至少可以确保您查看的是正确的最新数据。

关于c# - 通过循环检查列表框从数据库表中填充和删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5275485/

相关文章:

c# - FileNotFound 当我使用 Image.FromFile()

用于根据范围查找当前项目的 C# 数据结构

c# - WCF 传输与消息

如果主键存在于不同的表中,php mysql 尝试使用空仅在表中添加新记录

php - 如何在 SQL、Codeigniter 中的一个查询中设置不同的限制不同列?

php - fatal error : Call to a member function prepare() on a non-object

c# - 您如何管理网络服务的变更?

java - Java 准备语句中的通配符问题

javascript - 循环仅在添加 span 标记时显示数组中的最后一个字符串

php - 使用基于设备宽度的 PHP 变量替换图像源值