将 DataTable 与 ListBox 绑定

我正在试验和学习 windows 窗体应用程序,但我无法弄清楚绑定结构。根据 MSDN 文档:-您可以为数据源指定以下任何类的实例:


数据集


数据表


数据视图


数据视图管理器


绑定源


所以,我有一个简单的代码来理解这个结构。


我已经用列表框 listBox1 和 DataTable data_table 初始化了一个简单的 windows 窗体。


 static DataTable data_table = new DataTable("ParentTable");  

DataColumn column;

                DataRow row;

                column = new DataColumn();

                column.DataType = System.Type.GetType("System.Int32");

                column.ColumnName = "id";

                column.ReadOnly = false;

                column.Unique = true;

                // Add the Column to the DataColumnCollection.

                data_table.Columns.Add(column);

                for (int i = 0; i <= 2; i++)

                {

                    row = data_table.NewRow();

                    row["id"] = i;


                    data_table.Rows.Add(row);

                }

可以直接绑定到DataSource by。


listBox1.DataSource=new BindingSource(data_table , null);

listBox1.ValueMemeber="id";

但是当我使用以下


 Binding myBinding = new Binding("DataSource", data_table, "id");


 form_m.listBox1.DataBindings.Add(myBinding);

我得到异常


System.ArgumentException:复杂 DataBinding 接受 IList 或 IListSource 作为数据源


如果有人可以帮助我,我将不胜感激。


泛舟湖上清波郎朗
浏览 342回答 2
2回答

当年话下

您正在使用带有三个参数的构造函数重载Binding(String, Object, String)其中参数是propertyName- 要绑定的控件属性的名称。-DataSource在你的情况下dataSource- 表示数据源的对象。- 这是一个主数据源,注意它不是一个绑定到的数据源List.Box.DataSourcedataMember- 要绑定到的属性或列表。- 这是主数据源中属性的名称,该值将绑定到控件的DataSource.&nbsp;此值应该是 IList 或 IListSource您可以设置ListBox.DataSource而无需任何额外的绑定listBox.DataSource&nbsp;=&nbsp;myDataTable;检查链接:Windows 窗体数据绑定应该有足够的信息来说明如何使用数据绑定,如果您通过示例,您将很好地了解如何根据您的要求使用数据绑定。

慕码人2483693

您不需要任何额外的绑定。您可以将List、Array、Tables分配给DataSource并提供DisplayMember和ValueMember,同时使用对象或表的 List 作为DataSource如果您使用单维数组,则不需要提供DisplayMember和ValueMember。listbox1.DataSource = data_table;&nbsp;listbox1.ValueMember = "id";&nbsp;listbox1.DisplayMember = "id";
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go