Member 13475705 Ответов: 0

Сделать индекс combox выровнять в столбце SQL базе данных (c#)


private void combopop()
        {
            using (connection = new SqlConnection(connectionString))
            using (SqlDataAdapter adapter = new SqlDataAdapter("Select * FROM BiludstyrTABEL", connection))
            {
                DataTable dt3 = new DataTable();
                adapter.Fill(dt3);

                OScomboBox.DataSource = dt3;
                OScomboBox.ValueMember = "StregkodeID";
                OScomboBox.DisplayMember = "Name";
                OScomboBox.SelectedIndex = -1;
            }
            
        }

        private void OScomboBox_Click(object sender, EventArgs e)
        {
            combopop();
        }

        private void OScomboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            OSfyld1();
        }

        private void OSfyld1()
        {
            using (connection = new SqlConnection(connectionString))
            using (SqlDataAdapter adapter = new SqlDataAdapter("Select * FROM BiludstyrTABEL WHERE StregkodeID = '" + OScomboBox.SelectedIndex + "'", connection))
            {
                DataTable dt4 = new DataTable();
                adapter.Fill(dt4);

                foreach (DataRow dr in dt4.Rows)
                {
                    OSnavntextBox.Text = dr["Navn"].ToString();
                    OSproducenttextBox.Text = dr["Producent"].ToString();
                    OSkategoritextBox.Text = dr["Kategori"].ToString();
                    OSprismmomstextBox.Text = dr["Pris m. Moms"].ToString();
                    OSantaltextBox.Text = dr["Antal"].ToString();
                }
            }
        }


Что я уже пробовал:

Когда я нажимаю стрелку выпадающего списка combobox, она отображает valuemembers (StregkodeID) в выпадающем списке combobox. Оскомбобокс.SelectedIndex =-1; заставляет все идентификаторы появляться в выпадающем списке, если я не написал эту строку, то первый идентификатор (номер 1 - самоидентификатор базы данных) появится в выпадающем списке при нажатии на стрелку раскрывающегося списка.

Моя проблема: когда вы нажимаете ID 2 (Вторая строка в списке ID - конечно), он отображает первую запись в базе данных (он отображает запись первой записи базы данных) !!
Индекс shiftet при заполнении combobox правильно? Таким образом, первая запись из базы данных устанавливается в индекс 0 выпадающего списка? Когда я нажимаю на идентификатор 1, ничего не появляется (мои текстовые поля пусты). Поэтому каждый раз, когда я выбираю идентификатор в выпадающем списке, он отображает данные предыдущего индекса (pick 2 get 1, pick 5 get 4 и так далее).

Я работаю над этим уже несколько дней и, похоже, не могу найти никаких ответов. ПОЖАЛУЙСТА, ПОМОГИТЕ!

CHill60

Вы ответили на свой собственный вопрос - список полей со списком начинается с 0, а не с 1. Но вы должны использовать OSComboBox.ВыбранныйЦенность не показатель

Richard Deeming

НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]

using (SqlDataAdapter adapter = new SqlDataAdapter("Select * FROM BiludstyrTABEL WHERE StregkodeID = @StregkodeID", connection))
{
    adapter.SelectCommand.Parameters.AddWithValue("@StregkodeID", OScomboBox.SelectedValue);
    ...

0 Ответов