2012-02-02 31 views
0

我有魔女上一個WinForm了我在顯示的站點列表一個DataGridView。下面的格子我有一個TextBox和一個Combobox,使用DataBinding的文本框顯示當前值「代碼」網格列和組合框顯示省份。組合框充滿了對全省 奇怪的名單是: 當我改變選擇省內另一個組合框,在當時當焦點離開組合框,的組合框返回的原始值。我無法找到組合框保持更改值的方法。LINQ組合框的數據綁定行爲怪異

我究竟做錯了什麼?

這裏我對我的工作臺項目的代碼;

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查詢往往比預期的執行? – 2012-02-03 09:36:53

回答

0

在尋找解決的辦法,我已經發現,問題與數據類型(所有我的表ID是GUID)有關,我已經改變了綁定與varchar字段而不是guid綁定,並且事情進展順利。所以這個問題與GUID有關。但是我會改變我的做法,並與手動綁定

0

嘗試創建一個新的結合上下文你連擊

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

嗯,我已經嘗試過了,但行爲並沒有改變,仍然是當重點時原來的價值迴歸,離開了控制。 :( – Hugo 2012-02-02 21:00:54

+0

你有某種與你的組合框有關的事件呢? – 2012-02-02 21:08:07

+0

不,你在上面看到的代碼的形式是唯一的代碼,而組合框是沒有自定義之一。 – Hugo 2012-02-02 21:11:14