2009-04-25 4 views
0

У меня есть ComboBox, связанный с BindingSource, который, в свою очередь, привязан к таблице Linq.ComboBox и Linq to Sql для Winforms

Кроме того, ComboBox заполняется из источника данных, который представляет собой таблицу Linq.

Я хочу присвоить новое значение одному из свойств BindingSource.Current всякий раз, когда пользователь выбирает элемент в ComboBox. Я понял из MSDN, что мне нужно использовать событие SelectionChangeCommitted ComboBox.

Вот псевдокод:

myCB_SelectionChangeCommitted(...) 
{ 
    var val = myCB.SelectedValue; //I get selected value from user. 
    var q = bindingSource.Current as XYZ; 
    //Ommitted validation code to check if q is okay to work with 
    q.SomeProperty = NewCalculatedValue; //SomeProperty is bound to label 
    //After above line, myCB.SelectedValue is lost! 
    //It seems that this event fires **before** selected value 
     //is written to bound data source 
} 

Должен ли я использовать myCB.DataBindings [0] .WriteValue(); ? Или есть лучший способ?

Заранее спасибо.

ответ

0

Я хотел бы сделать что-то вроде

long index = q.databaseindex; 
LinqObject = (from l in DataContext.linqtable where l.index = index select l).First(); 
    //Make sure you do a check that count > 0 before calling First! 
LinqObject.property = value; 
LinqObject.SubmitChanges(); 

Таким образом, независимо от того, как объект сохраняется в ComboBox вы будете в состоянии захватить объект из базы данных, а затем обновить его со значением, и т.д.

Сообщите нам

 Смежные вопросы

  • Нет связанных вопросов^_^