2009-08-26 34 views
0

我有一個創建和填充DataSet的主類,然後通過引用將該類的實例傳遞給我的應用程序的子控件。我想使用這個數據集來綁定到組件,在這種情況下,是一個列表框。這是一個Windows窗體應用程序。.Net Listbox DataBinding問題

繼承人我嘗試:

channelTypesLB.DataBindings.Add("Text", synData.ds, "ChannelTypes.channelType"); 

注意,我也嘗試過這樣的:(不知道那裏有差異)

channelTypesLB.DataBindings.Add("Text", synData.ds.Tables["ChannelTypes"], "channelType"); 

世界上沒有錯誤,我沒有看到在列表框中的數據...當我輸出synData.ds.Tables["ChannelTypes"].Rows.Count它告訴我,這個數據表中實際上有數據。

我錯過了什麼嗎?我也修了channelTypesLB.Refresh();設置數據綁定後。

這也可能會有所幫助......這就是在創建數據集在我的主類的代碼,不知道它可能是範圍問題,我想像我會收到一個錯誤:

private DataSet _ds = new DataSet(); 
public DataSet ds { get { return _ds; } } 

回答

3

嘗試設置列表框的DataSource,而不是綁定到Text屬性:

channelTypesLB.DataSource = synData.ds; 
channelTypesLB.DisplayMember = "ChannelTypes.channelType"; 

我不以任何方式一個數據綁定的專家,但我相信,通過數據綁定的方式,您目前正在做的控制綁定到一個用於綁定一個val的PropertyManager對另一個價值的對象。通過設置DataSource,它應該綁定到用於綁定到收集CurrencyManager

Here's a quick overview of WinForms databinding

+0

Hrmm的工作...使用DisplayMember而不是DataMember ...我寧願使用DataBindings的1班輪雖然 –

+0

哎呦,這是一個錯字 - 沒有像DataMember這樣的事情。你也可以建立一個'BindingSource',它本身有一個DataSource和DisplayMember(雖然它們可以通過構造函數訪問,我相信)並設置ListBox.DataSource = BindingSource – STW

+0

感謝您指引我朝着正確的方向 –

1

我在這裏假設的WinForms,因爲沒有ASP.NET標籤...

channelTypesLB.DataSource = synData.ds.Tables["ChannelTypes"].DefaultView; 
channelTypesLB.DisplayMember = "channelType"; 

以防萬一它是ASP.NET雖然嘗試:

channelTypesLB.DataSource = synData.ds.Tables["ChannelTypes"].DefaultView; 
channelTypesLB.DataTextField = "channelType"; 
channelTypesLB.DataValueField = "channelTypeId"; // I'm assuming this field exists, replace with your id field 

channelTypesLB.DataBind(); 
+0

是的,winforms。任何想法爲什麼數據綁定不起作用? –