2012-02-02 8 views
0

私は魔法使いにWinFormを持っています。私は、サイトのリストを表示するDataGridViewを持っています。私はテキストボックスとコンボボックスを持っているグリッドを鳴らし、現在の値 "コード"グリッド列とコンボボックスを表示するテキストボックスをDataBindingで表示します。コンボボックスは都道府県のリストで埋められています 変わったことはこれです: コンボボックスをコンボボックスのままにしたとき、コンボボックスの元の値を戻してコンボボックスを選択します。私はコンボボックスが変更された値を保持する方法を見つけることができません。LINQ Comboboxデータバインディングが異常に動作する

何が間違っていますか?

私のワークベンチプロジェクトのコードです。

private void Form1_Load(object sender, EventArgs e) 
    { 
     context = new GMR_DEVEntities(); 
     lSite = from t in context.tblSites where t.Actif == true select t; 
     this.dataGridView1.DataSource = lSite; 

     this.dataGridView1.AutoGenerateColumns = true; 
     Guid ProvinceId = Guid.Parse("00000000-0001-0000-0008-000000000001"); 

     IQueryable<tblDomVal> provinces = from prov in context.tblDomVals where prov.pTypeDomValID == ProvinceId select prov; 

     comboBox1.DataSource = provinces; 
     comboBox1.ValueMember = "ID"; 
     comboBox1.DisplayMember = "DescrFr"; 

     textBox1.DataBindings.Add(new Binding("Text", lSite, "Code")); 

     comboBox1.DataBindings.Add(new Binding("SelectedValue", lSite, "pProvinceID", false, DataSourceUpdateMode.OnPropertyChanged)); 


    } 

すべてのヘルプは大歓迎:)だろう

ヒューゴ

+0

おそらく、lSiteクエリが予想よりも頻繁に実行されることに気づいていますか? –

答えて

0

をコンボのための解決策を探している間、私がいることを発見した新しいバインディングコンテキストを作成してみてください問題は、データ型(私のすべてのテーブルIDはGUIDです)と関係があり、GUIDの代わりにvarcharフィールドを使用してバインドするようにバインドを変更しました。だから問題はGUIDと関係があります。しかし、私は自分のアプローチを変更し、手作業のバインドで作業します

0

あなたは

BindingContext oBC = new BindingContext(); 
    comboBox1.BindingContext = oBC; 
    comboBox1.DataBindings.Add(new Binding("SelectedValue", lSite, "pProvinceID", false, DataSourceUpdateMode.OnPropertyChanged)); 
+0

まあ、私はそれを試してみましたが、動作が変更されていない、まだ元の値は、フォーカス、コントロールを残すときに戻ります。 : – Hugo

+0

あなたのコンボボックスに関連する何らかのイベントがありますか? –

+0

いいえ、上記のコードはフォームの唯一のコードです。コンボボックスはカスタムのものではありません。 – Hugo

関連する問題