2009-04-25 5 views
0

Ich habe ComboBox an BindingSource gebunden, die ihrerseits an Linq Table gebunden ist.ComboBox und Linq zu Sql für Winforms

ComboBox wird auch aus Datenquelle gefüllt, die eine Linq-Tabelle ist.

Ich möchte einer Eigenschaft von BindingSource.Current einen neuen Wert zuweisen, wenn der Benutzer ein Element in ComboBox auswählt. Ich habe von MSDN verstanden, dass ich das SelectionChangeCommitted-Ereignis von ComboBox verwenden muss.

Dies ist Pseudocode:

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 
} 

Muss ich myCB.DataBindings verwenden [0] .WriteValue(); ? Oder gibt es einen besseren Weg?

Vielen Dank im Voraus.

Antwort

0

würde ich so etwas wie

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(); 

Auf diese Weise unabhängig davon tun, wie das Objekt auf die ComboBox beibehalten wird Sie in der Lage sein werden, das Objekt aus der Datenbank zu erfassen und sie dann mit dem Wert aktualisieren, usw.

Lassen Sie uns wissen