Как вернуть выбранные элементы обратно в selectedListBox - PullRequest
0 голосов
/ 04 июня 2018

Я проверил список списков CLB_CONTROLLER , который загружается на страницу для отображения имен вместо идентификатора: эта информация хранится в dbo.CHIPSET

public void loadCategory()
{
    CLB_CONTROLLER.DataSource = catg.getCategories();
    CLB_CONTROLLER.DisplayMember = "CHIPSET";
    CLB_CONTROLLER.ValueMember = "CHIPSET_ID";
}

Затем я вставляю данные вБД в виде строки.Эта информация хранится в dbo.MYDB

//LOOP THROUGH CONTROLLER CHECKED ITEMS TO INSERT ALL SELECTED
string chip = "";
for (int i = 0; i < CLB_CONTROLLER.CheckedItems.Count; i++)
{
    if (chip == "")
    {
        chip = CLB_CONTROLLER.GetItemText(CLB_CONTROLLER.CheckedItems[i]);
    }
    else
    {
        chip += ", " + CLB_CONTROLLER.GetItemText(CLB_CONTROLLER.CheckedItems[i]);
    }
}

Пока все хорошо ... Теперь я хочу создать функцию обновления ... Когда пользователь выбирает ячейку из DataGrid, я хочу автоматически заполнить все textboxes,CheckBoxes и т. Д. На странице.Поэтому я пытаюсь понять, как я могу сделать это с CLB_CONTROLLER, упомянутым выше.Обновление ищет внутри dbo.MYDB и столбец 2 CHIPSET, который теперь является строкой (вставлен с кодом выше).У меня есть этот код ниже, но когда я нажимаю DataGrid, внутри CLB_CONTROLLER

//CHECK IF CONTROLLER CONTAINES CONTENT, THEN SELLECT APPROPRIATE CHECK BOX
string con = DGV_AOC.CurrentRow.Cells[2].Value.ToString();
string[] convalues = con.Split(',');
for (int i = 0; i < convalues.Length; i++)
{
    convalues[i] = convalues[i].Trim();
}

for (int i = 0; i < CLB_CONTROLLER.Items.Count; i++)
{
    CLB_CONTROLLER.SetItemChecked(i, false);//First uncheck the old value!
    for (int x = 0; x < convalues.Length; x++)
    {
        if (CLB_CONTROLLER.Items[i].ToString() == convalues[x].ToString())
        {
            //Check only if they match! 
            CLB_CONTROLLER.SetItemChecked(i, true);
        }
    }
}

ничего не происходит. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 04 июня 2018

Допустим, вы заполнили CheckedListBox a,b,c,d,e,f, например, как тексты элементов.

Затем вы можете установить отмеченные элементы на основе списка, разделенного запятыми, следующим образом:

var itemsToSelect = "a,c,d";
var items = itemsToSelect.Split(',');
for (var i = 0; i < checkedListBox1.Items.Count; i++)
{
    var b = items.Contains(checkedListBox1.GetItemText(checkedListBox1.Items[i]));
    checkedListBox1.SetItemChecked(i, b);
}

Также вы можете получить отмеченные элементы в строке через запятую следующим образом:

var selectedItems = string.Join(",",
    checkedListBox1.CheckedItems.Cast<object>()
        .Select(x => checkedListBox1.GetItemText(x)));
...