Заполнение и удаление элементов из таблицы базы данных с помощью циклического просмотра через флажок списка - PullRequest
2 голосов
/ 11 марта 2011

То, что я пытаюсь сделать, это заполнить второй флажок проверенного списка на основе выбранных элементов в первом флажке проверенного списка и удалить элементы из базы данных, когда родительский элемент не отмечен в первом поле. Я могу заполнить второе поле, просматривая только элементы, отмеченные проверено , однако мне нужно также включить элементы, не отмеченные галочкой, если я хочу удалить их из таблицы. Вот код, который у меня есть на данный момент:

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

Я не получаю никаких ошибок, однако второй проверенный список не заполняется. Любая помощь будет принята с благодарностью. Спасибо!

Ответы [ 2 ]

0 голосов
/ 11 марта 2011

Если вы проверяете правильные вещи, это должно работать.

Можете ли вы дважды проверить, через какой 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 выше на то, что лучше всего выводить. Это по крайней мере убедит вас, что вы смотрите на правильные, текущие данные.

0 голосов
/ 11 марта 2011

После установки свойства DataSource обычно вам необходимо вызвать DataBind () для CheckedListBox, чтобы отобразить данные в нем.Это помогает?

...