akosisugar Ответов: 1

C# поиск в combobox


Привет, я пытаюсь загрузить запись из моей БД в combobox.. иногда загружает всю запись, но иногда она показывает ошибку.. я не знаю, является ли событие combobox проблемой или моим методом.. pls помогите новичку..

сообщение об ошибке:

InvalidArgument=Value of '0' is not valid for 'index'.
Parameter name: index


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

//мой метод
void loadSubject(ComboBox cbo)
        {
            try
            {
                SqlConnection con = new SqlConnection(cs.getConnectionString());
                con.Open();
                DataTable dt = new DataTable();
                string query = "SELECT subjectcode,description FROM tblsubject WHERE description LIKE '%' + @1 + '%' ORDER BY description ASC";
                SqlCommand cmd = new SqlCommand(query, con);
                cmd.Parameters.AddWithValue("@1",cbosubject.Text);
                SqlDataReader dr = cmd.ExecuteReader();
                dt.Load(dr);
                cbo.DisplayMember = "description";
                cbo.ValueMember = "subjectcode";
                cbo.DataSource = dt;
            }
            catch (Exception)
            {
                publicFunctions.mBox(3, "error occured");
            }
        }


//мое событие combobox
private void cbosubject_TextChanged(object sender, EventArgs e)
        {
            loadSubject(cbosubject);
        }

Karthik_Mahalingam

вы используете listview?

akosisugar

никакого списка..

akosisugar

я печатаю и ищу внутри combobox, а затем загружаю все внутри одного и того же combobox

Karthik_Mahalingam

измените значение @1 на @val

akosisugar

та же проблема. мой проект останавливается при нажатии кнопки combobox..

Karthik_Mahalingam

В какой строке вы получаете ошибку

akosisugar

отладка останавливается, когда я дважды щелкаю combobox

Karthik_Mahalingam

на какой линии он останавливается?

1 Ответов

Рейтинг:
1

Andrew Baylis

Я подозреваю, что проблема заключается в событии изменения текста. Вы изменяете itemsource Combobox в этом событии, которое затем вызовет изменение текста, инициируя событие или вызывая какую-то другую ошибку.
Если вам нужна функциональность так, как вы ее настроили, я рекомендую вам использовать текстовое поле для ввода / запуска измененного текста и отдельное поле списка, содержащее список для вызова loadsubject. Обратите внимание, что вы, вероятно, найдете снижение производительности, запрашивая базу данных о каждом изменении текста...