2009-09-07 65 views
0

鑑於我的表主表綁定導航:爲什麼選擇一個值後我的組合框變爲空白?

CREATE TABLE [dbo].[asset](
[assetID] [int] IDENTITY(1,1) primary key, 
[assetTag] [varchar](15) NULL, 
[assetModelId] [int] NOT NULL, 
[employeeId] [int] NULL references employee(employeeid), 
[LocationId] [int] NULL, 
[purchasedDate] [smalldatetime] NULL, 
[purchasedby] [int] NULL references employee(employeeid), 
[depreciated] [tinyint] NULL, 
[addedDate] [smalldatetime] NULL CONSTRAINT, 
[addedBy] [int] NULL references employee(employeeid), 
[disposalDate] [smalldatetime] NULL 

這裏的bindingNavigator結合:

bindingNavigator1.BindingSource = _formData.BsAssets; // binding source for the asset table(linq-to-sql dbml) 

下面是對ComboBox綁定代碼:每次我選擇

 _BsAsset.DataSource = _formData.GPS.dc.assets; 
     _BsUser.DataSource = _formData.GPS.dc.employees; 
     cmbUser.DisplayMember = "userName"; 
     cmbUser.ValueMember = "employeeId"; 
     cmbUser.DataSource = _BsUser; 

     cmbUser.DataBindings.Add("SelectedValue", _BsAsset, "employeeId"); 

它保留的組合框上的值...直到控件失去焦點,然後將其設置回空白(空)。

組合框設置爲DropDown模式,以便用戶可以直接從該組合框向該表添加新值。如果我輸入一個值保持不變的值(我還沒有放入任何代碼來實現此功能)。

我使用相同的代碼將組合框綁定到引用僱員表的其他兩個值,結果相同。 爲什麼選擇一些東西后,它會一直將其設置爲空?

回答

0

聽起來像下拉控件重新加載每次當它失去焦點。當它失去控件的焦點時,頁面是否被回傳?

+0

對不起,也許我應該提到它的Windows窗體,而不是asp – Maslow 2009-09-08 01:18:41

0

DisplayMember屬性設置爲userName,它不存在於您的數據源中。

+0

我的dataSource是僱員表,它具有userName屬性。此外,即使在註釋掉DataBindings.Add行時,我也可以看到combox框中的未命名列表。 – Maslow 2009-09-08 11:46:35

0

我發現了一件有趣的事情。當我去了組合框的屬性,然後到DataBindings/Advanced,並刪除了文本條目,組合框突然停止消失,當它失去了焦點。 值得一試。

0

我在將組合框綁定到可空類型時有過這種經歷。我必須在Databindings.Add重載簽名中包含formattingEnabled參數,將其設置爲true。

從MSDN:

將此屬性設置爲true,也使錯誤處理行爲和 導致拋出的BindingComplete事件。

更改綁定的代碼如下:

cmbUser.DataBindings.Add("SelectedValue", _BsAsset, "employeeId", true); 

,你應該看到你想要的結果。

相關問題