Лента CheckedListBox из строки - PullRequest
0 голосов
/ 03 апреля 2019

в первую очередь - я знаю, что по этому поводу есть какие-то посты, но я не понимаю "учебник"

По сути, я пытаюсь заполнить Checkedlistbox данными из строки из базы данных MYSQL

ListBox уже содержит все проверяемые значения, теперь я просто хочу, чтобы строка сообщала checklist, какие элементы он должен проверять.

Моя строка / массив ... действительно не знаю правильное определение ... (пример) выглядит следующим образом: "B, BE, C1E," (Типы Drivinglicence)

Мне бы очень хотелось поделиться своей текущей работой над этой проблемой, если бы я не соскребил все в 10-й раз, поскольку я действительно испортил свое мышление.

Я бы настоятельно рекомендовал любые подсказки, указывающие мне направление, поскольку я чувствую себя потерянным прямо сейчас

Редактировать: о да, я использую c # btw

Ответы [ 2 ]

1 голос
/ 05 апреля 2019

РЕАЛЬНОЕ РЕШЕНИЕ

, поскольку я был недоволен своим последним "решением", я попробовал еще немного и расшифровал, используя это:

MySqlCommand führerscheinstring = conn.CreateCommand();
            führerscheinstring.CommandText = "SELECT führerschein FROM bewerber WHERE id = '" + textBoxrecruitingid.Text + "'";
            string stringführerschein = führerscheinstring.ExecuteScalar().ToString();
            char[] charSeparators = new char[] { ',' };
            string[] result;

            result = stringführerschein.Split(charSeparators, StringSplitOptions.None);

            foreach (string entry in result)
            {
                if (entry == "A")
                {
                    checkedListBoxrecruitingführerschein.SetItemChecked(0,true);
                }
                else if (entry == "B")
                {
                    checkedListBoxrecruitingführerschein.SetItemChecked(1, true);
                }
                else if (entry == "BE")
                {
                    checkedListBoxrecruitingführerschein.SetItemChecked(2, true);
                }
                else if (entry == "C1")
                {
                    checkedListBoxrecruitingführerschein.SetItemChecked(3, true);
                }
                else if (entry == "C")
                {
                    checkedListBoxrecruitingführerschein.SetItemChecked(4, true);
                }
                else if (entry == "C1E")
                {
                    checkedListBoxrecruitingführerschein.SetItemChecked(5, true);
                }
                else if (entry == "CE")
                {
                    checkedListBoxrecruitingführerschein.SetItemChecked(6, true);
                }
                else if (entry == "D1")
                {
                    checkedListBoxrecruitingführerschein.SetItemChecked(7, true);
                }
                else if (entry == "D")
                {
                    checkedListBoxrecruitingführerschein.SetItemChecked(8, true);
                }
                else if (entry == "D1E")
                {
                    checkedListBoxrecruitingführerschein.SetItemChecked(9, true);
                }
                else if (entry == "DE")
                {
                    checkedListBoxrecruitingführerschein.SetItemChecked(10, true);
                }
                else if (entry == "L")
                {
                    checkedListBoxrecruitingführerschein.SetItemChecked(11, true);
                }
                else if (entry == "T")
                {
                    checkedListBoxrecruitingführerschein.SetItemChecked(12, true);
                }
                else if (entry == "ADR")
                {
                    checkedListBoxrecruitingführerschein.SetItemChecked(14, true);
                }
                else if (entry == "ADR Tank")
                {
                    checkedListBoxrecruitingführerschein.SetItemChecked(15, true);
                }
                else if (entry == "Module vorhanden")
                {
                    checkedListBoxrecruitingführerschein.SetItemChecked(16, true);
                }
                else if (entry == "Fahrerkarte vorhanden")
                {
                    checkedListBoxrecruitingführerschein.SetItemChecked(17, true);
                }
                else
                {
                }
            }

назначить сплиттер char

char[] charSeparators = new char[] { ',' };

выберите, что проверять (17 - идентификатор элемента (начинается с 0), true означает, что элемент будет проверен)

checkedListBoxrecruitingführerschein.SetItemChecked(17, true);
1 голос
/ 05 апреля 2019

"РЕШЕНИЕ"

это не совсем решение моей проблемы, однако я хотел бы поделиться своим решением.

я добавил каждую возможную комбинацию проверяемых элементов в запрос db, спрашивающий, является ли запись db одной из этих комбинаций (пример в коде)


MySqlCommand führerscheinab = conn.CreateCommand();
            führerscheinab.CommandText = "SELECT count(*) FROM bewerber WHERE id = '" + textBoxrecruitingid.Text + "' and führerschein = 'A,B,'";
            string countab = führerscheinab.ExecuteScalar().ToString();

            MySqlCommand führerscheinabe = conn.CreateCommand();
            führerscheinabe.CommandText = "SELECT count(*) FROM bewerber WHERE id = '" + textBoxrecruitingid.Text + "' and führerschein = 'A,BE,'";
            string countabe = führerscheinabe.ExecuteScalar().ToString();

            MySqlCommand führerscheinac1 = conn.CreateCommand();
            führerscheinac1.CommandText = "SELECT count(*) FROM bewerber WHERE id = '" + textBoxrecruitingid.Text + "' and führerschein = 'A,C1,'";
            string countac1 = führerscheinac1.ExecuteScalar().ToString();

            MySqlCommand führerscheinac = conn.CreateCommand();
            führerscheinac.CommandText = "SELECT count(*) FROM bewerber WHERE id = '" + textBoxrecruitingid.Text + "' and führerschein = 'A,C,'";
            string countac = führerscheinac.ExecuteScalar().ToString();

            MySqlCommand führerscheinac1e = conn.CreateCommand();
            führerscheinac1e.CommandText = "SELECT count(*) FROM bewerber WHERE id = '" + textBoxrecruitingid.Text + "' and führerschein = 'A,C1E,'";
            string countac1e = führerscheinac1e.ExecuteScalar().ToString();

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

if (countab == 1)
{
 check a and b
}
else if (countabe == 1)
{
 check a and be
}
else if ( ... and so on

Не совсем то решение, которое я хотел, и, конечно, не самое лучшее с точки зрения ресурсов, но да .. оно работает ^^

...