Поиск ID выбранных элементов

111
10 февраля 2021, 07:30

Есть combobox с мультивыбором (источник). В него из БД приходят items. Пользователь что-то выбирает. Нужно этот набор вернуть в базу (точнее в связную таблицу добавить ID выбранных элементов).

  1. Можно для каждого элемента делать запрос в БД, чтобы узнавать ID.
  2. Можно изначально (когда идет наполнение) брать из БД еще и ID.

Во втором случае вижу такое решение. Полученный набор "ID - Значение" добавлять в List с типом кастом класса (с двумя полями). Когда получены "значения" от пользователя - запустить цикл с одним условием на поиск совпадения. Откуда и можно получить набор ID для всех выбранных элементов.

Можно ли во втором случае без перебора в цикле получить ID зная значение?

Answer 1

Возможно я неправильно понял вопрос, но CheckedComboBox.CheckedItems вернет список значений Вашего класса. Соответственно, и ID и наименование («значение») будут доступны.

Например, у Вас есть класс:

class CCBoxItem
{
    public int ID { get; set; }
    public string Name{get;set;}
    public CCBoxItem(int id, string name)
    {
        Name = name;
        ID = id;
    }
}

Вы загружаете список ID-Name из БД, затем добавляете их в CheckedComboBox:

List<CCBoxItem> items = //загрузка из БД
ccb.Items.AddRange(items.ToArray());
ccb.DisplayMember = "Name";
ccb.ValueSeparator = ", ";

После того как пользователь что-нибудь выбрал, обращаетесь к CheckedItems и получаете то, что Вам нужно:

foreach (CCBoxItem item in ccb.CheckedItems)
{
    //хотите ID
    Console.WriteLine(item.ID);
    //хотите Name
    Console.WriteLine(item.Name);
}
READ ALSO
Какой смысл создавать индекс для этого столбца?

Какой смысл создавать индекс для этого столбца?

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

103
Как перевести 4 байта DWORD в читаемую строку

Как перевести 4 байта DWORD в читаемую строку

У меня имеется файл, в начале которого содержится 4 байта DWORD с некоторым id и я без понятия как его сделать читабельным

97
Как проверить все ли столбцы SQL заполнены?

Как проверить все ли столбцы SQL заполнены?

У меня есть таблица mysql с 50 столбцамиКак проверить на PHP, что все столбцы заполнены?

110
Сумма найденых элементов

Сумма найденых элементов

В битриксе через CIBlockElement::GetList вывожу полученные элементы

122