.Net Listbox数据绑定问题

时间:2009-08-26 02:00:25

标签: .net data-binding dataset

我有一个创建和填充DataSet的主类,然后通过引用将该类的实例传递给我的应用程序的子控件。我想使用此数据集来数据绑定到组件,在本例中是一个列表框。这适用于Windows窗体应用程序。

继承人我正在尝试的事情:

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

注意,我也试过这个:(不确定是否有区别)

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

Theres没有错误,我没有看到列表框中的数据...当我输出synData.ds.Tables["ChannelTypes"].Rows.Count时,它告诉我实际上数据中有数据。

我错过了什么吗?我还修改了channelTypesLB.Refresh();设置数据绑定后。

这也可能有用......这是我的主类中创建数据集的代码,不确定它是否可能是范围问题,我想我会收到错误:

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

2 个答案:

答案 0 :(得分:3)

尝试设置Listbox的DataSource,而不是绑定到Text属性:

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

我无论如何都不是DataBinding专家,但我相信通过数据绑定您当前的方式,控件绑定到PropertyManager,用于将对象的一个​​值绑定到另一个值。通过设置DataSource,它应绑定到用于绑定到集合CurrencyManager

Here's a quick overview of WinForms databinding

答案 1 :(得分: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();