2009-04-25 4 views
0

Je ComboBox lié à BindingSource qui à son tour est lié à LINQ Tableau. AussiComboBox et LINQ to SQL Server pour Winforms

, ComboBox est rempli à partir de la source de données qui est un tableau Linq.

Je veux attribuer une nouvelle valeur à l'une des propriétés de BindingSource.Current chaque fois que l'utilisateur sélectionne élément dans ComboBox. J'ai compris de MSDN que j'ai besoin d'utiliser l'événement SelectionChangeCommitted de ComboBox.

Voici le code pseudo:

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 
} 

Dois-je utiliser myCB.DataBindings [0] .WriteValue(); ? Ou y a-t-il un meilleur moyen?

Merci d'avance.

Répondre

0

je ferais quelque chose comme

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

De cette façon, quelle que soit la façon dont l'objet est conservé à l'ComboBox, vous serez en mesure de saisir l'objet de la base de données, puis le mettre à jour avec la valeur, etc.

Faites-nous savoir