предотвращение поля со списком для назначения элемента и заполнения его текста

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

    private void cmbCompany_TextChanged(object sender, EventArgs e)
    {
        string QueryCompany = string.Format("select id,title from acc.dl union select null , null order by title");
        SqlDataAdapter DA1 = new SqlDataAdapter(QueryCompany, con);
        con.Open();
        DataTable DT1 = new DataTable();
        DA1.Fill(DT1);
        con.Close();
        DataView dv = new DataView(DT1);
        dv.RowFilter = "Title like '%" + cmbCompany.Text + "%'";
        cmbCompany.DisplayMember = "Title";
        cmbCompany.ValueMember = "id";
        cmbCompany.DataSource = dv;
    }

не могли бы вы предоставить какое-либо решение этой проблемы?


person Community    schedule 06.01.2015    source источник


Ответы (2)


установите эти свойства поля со списком.

cmbCompany.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
cmbCompany.AutoCompleteSource = AutoCompleteSource.ListItems;

Удалите событие TextChanged и один раз привяжите datasource из combobox (при загрузке или любом другом событии).

private void Form1_Load(object sender, EventArgs e)
    {

        string QueryCompany = string.Format("select id,title from acc.dl union select null , null order by title");
        SqlDataAdapter DA1 = new SqlDataAdapter(QueryCompany, con);
        con.Open();
        DataTable DT1 = new DataTable();
        DA1.Fill(DT1);
        con.Close();
        cmbCompany.DataSource = DT1;
        cmbCompany.DisplayMember = "Title";

    }

Это должно сделать то, что вы ожидаете.

person Rohit    schedule 06.01.2015
comment
Я попробовал событие formload, но элементы не обновляются при вводе новых букв. - person ; 06.01.2015
comment
Кажется, я неправильно понял ваш вопрос ... вы хотите искать напрямую из db? - person Rohit; 06.01.2015

Изменить на это

cmbCompany.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
cmbCompany.AutoCompleteSource = AutoCompleteSource.ListItems;
person Aditya Kiran    schedule 06.01.2015