Поле со списком с выбранным значением и автозаполнением

Имея 1 datagridview для продуктов и 1 поле со списком для категорий, я установил для выбранного поля со списком значение CategoryID.

Когда я ввожу в поле со списком первые буквы имени категории и нажимаю Enter, имя заполняется внутри поля со списком, но относительное поле в datagridview не изменяется, пока я не щелкну за пределами списка.

Пожалуйста, есть ли способ заставить нажатие клавиши Enter выполнять изменения в datagridview, чтобы я мог сохранить изменения непосредственно при нажатии кнопки сохранения.


person Sami-L    schedule 17.07.2012    source источник
comment
как вы привязываете свои категории к выпадающему списку и обновляете вид сетки? Я сделал то же самое сегодня, и это сработало   -  person codingbiz    schedule 18.07.2012
comment
@tcoder, я использую L2SQL через источник привязки данных и навигатор привязки данных к продуктам (сетка данных) и источник привязки данных к категориям (комбо). Все работает хорошо, но не удалось использовать клавишу Enter для одновременного обновления обоих перед сохранением данных в базе данных (кнопка сохранения в bindingSourceNavigator).   -  person Sami-L    schedule 18.07.2012
comment
На самом деле у меня был центральный метод fillGrid(), который вызывался из любой точки, но я не использовал источник привязки. В fillGrid у меня только что было mygridview.DataSource = MyClass.GetSomeData()   -  person codingbiz    schedule 18.07.2012
comment
Ваш метод более профессиональный (меньше использования элементов управления), все равно большое спасибо   -  person Sami-L    schedule 18.07.2012


Ответы (2)


Таким образом, gridview можно было заполнить из любого источника, вызвав FillGrid()

    private void FilterComboBox_SelectedIndexChanged(object sender, EventArgs e)
    {
        string selText = FilterComboBox.SelectedValue.ToString();         
        FillGrid(selText);
    }

   private void FillGrid(string filterValue = "0")
   {
        //GetDefaultValues(if filtervalue = 0)
        //else GetValues(based On Selected category)
        //Bind Values to Grid
   }
person codingbiz    schedule 18.07.2012
comment
в этом случае мы не фильтруем строки таблицы данных с помощью комбо, комбо используется только для изменения категории в таблице продуктов. - person Sami-L; 18.07.2012

Я мог бы обновить идентификатор категории в источнике привязки продукта одновременно с нажатием клавиши «Ввод» в комбинированном автозаполнении, используя следующее событие: cboCategories_SelectedValueChanged следующим образом:

    private void cboCategories_SelectedValueChanged(object sender, EventArgs e)
{
    int val = Convert.ToInt32(cboCategories.SelectedValue);
    ModifGrid(val);
}
private void ModifGrid(int ModifiedValue)
{
    if (Convert.ToInt32(productBindingSource.Count)>0)
    {
        ((Product)productBindingSource.Current).CategoryID = ModifiedValue;
    }
}

После нажатия кнопки «Сохранить» в BindingSourceNavigator изменения сохраняются в базе данных.

person Sami-L    schedule 18.07.2012