C# 将包含DataRow对象的ArrayList绑定到DataGridView.DataSource

C# 将包含DataRow对象的ArrayList绑定到DataGridView.DataSource,c#,.net,winforms,arraylist,datagridview,C#,.net,Winforms,Arraylist,Datagridview,我正在尝试将名为duplicates的ArrayList中的项目绑定到DataGridView。但是,它并没有显示来自ArrayListItemArray的数据,这正是我想要的,而是显示元数据 duplicates是类型ArrayList: duplicates = compare.FindDuplicates(existingLeadFilePath, newLeadFilePath); gridViewMain.DataSource = duplicates; 结果 据我所知,您希望将这

我正在尝试将名为
duplicates
ArrayList
中的项目绑定到
DataGridView
。但是,它并没有显示来自
ArrayList
ItemArray
的数据,这正是我想要的,而是显示元数据

duplicates
是类型
ArrayList

duplicates = compare.FindDuplicates(existingLeadFilePath, newLeadFilePath);
gridViewMain.DataSource = duplicates;
结果


据我所知,您希望将这些数字绑定到datagridview。您要做的是将一个数组列表与一些对象绑定,这些对象具有您想要作为成员的数组,这就是datagridview显示的内容

尽量不要使用包含5个项的数组,而是使用包含5个成员的类,然后使用这些对象的列表作为数据源

可在此处找到扩展教程:


请原谅我的英语不好,我正在用手机写信。

据我所知,您想将这些号码绑定到datagridview。您要做的是将一个数组列表与一些对象绑定,这些对象具有您想要作为成员的数组,这就是datagridview显示的内容

尽量不要使用包含5个项的数组,而是使用包含5个成员的类,然后使用这些对象的列表作为数据源

可在此处找到扩展教程:


请原谅我的英语不好,我在用手机写东西。

如果你改变
FindDuplicates()
方法,返回一个强类型的
列表
,里面有一个真正的类型,这个问题就会消失。然后DataGridView具有实际属性,可以查看这些属性以了解要创建哪些列


ArrayList已经死了。您几乎不应该在新代码中使用它们。即使您合法地找不到与
列表
一起使用的真正类型,
列表
仍然是比
ArrayList
更好的选择,因为它向维护人员传达了基本对象类型才是您真正想要的,并且如果您能够获得更强大的类型(如接口),它会让您更容易更改将来。

如果将
FindDuplicates()
方法改为返回一个强类型的
列表,其中包含一个实类型,那么这个问题就会消失。然后DataGridView具有实际属性,可以查看这些属性以了解要创建哪些列


ArrayList已经死了。您几乎不应该在新代码中使用它们。即使您合法地找不到与
列表
一起使用的真正类型,
列表
仍然是比
ArrayList
更好的选择,因为它向维护人员传达了基本对象类型才是您真正想要的,并且如果您能够获得更强大的类型(如接口),它会让您更容易更改将来。

您试图显示一个
数组列表
,其中包含一些
数据行
对象,
数据网格视图
正在显示
数据行
的属性。这是意料之中的

但是您应该注意到,当您在
DataGridView
中显示
DataTable
时,控件显示的是列而不是属性

为什么?显示
DataTable
和显示
DataRow
对象列表有什么区别?

不同之处在于,
DataGridView
显示了
DataTable
DefaultView
属性,该属性属于实现的
DataView
类型。因此,它只显示了从
DataTable
请求的实际返回内容,它是一个表列列表

如何在
DataGridView
中显示
DataRow
对象的列表?

只需将它们添加到与原始表具有相同模式的表中。例如:

private void Form1_Load(object sender, EventArgs e)
{
    var originalTable = new DataTable();
    originalTable.Columns.Add("C1");
    originalTable.Columns.Add("C2");

    //Original data
    originalTable.Rows.Add("A", "B");
    originalTable.Rows.Add("X", "Y");
    originalTable.Rows.Add("A", "B");
    originalTable.Rows.Add("X", "Y");

    //An ArrayList containing duplicate DataRow objects
    var duplicates = new System.Collections.ArrayList();
    duplicates.Add(originalTable.Rows[2]);
    duplicates.Add(originalTable.Rows[3]);

    //Create a Table having the same schema of the original table
    var duplicatesTable = originalTable.Clone();

    //Add copy of duplicates to the duplicate table
    foreach (DataRow item in duplicates)
    {
        duplicatesTable.Rows.Add(item.ItemArray);
    }
    this.dataGridView1.DataSource = duplicates;
}
注意


使用
DataTable
时,不需要使用
ArrayList
。您有不同的选项,例如使用DataTable的
Clone
方法创建具有相同架构的空DataTable,使用
copy
方法创建数据和架构的副本,使用
AsDataView
AsEnumerable
AsEnumerable()执行一些搜索
等等。

您试图显示一个包含一些
DataRow
对象的
ArrayList
,而
DataGridView
正在显示
DataRow
的属性。这是意料之中的

但是您应该注意到,当您在
DataGridView
中显示
DataTable
时,控件显示的是列而不是属性

为什么?显示
DataTable
和显示
DataRow
对象列表有什么区别?

不同之处在于,
DataGridView
显示了
DataTable
DefaultView
属性,该属性属于实现的
DataView
类型。因此,它只显示了从
DataTable
请求的实际返回内容,它是一个表列列表

如何在
DataGridView
中显示
DataRow
对象的列表?

只需将它们添加到与原始表具有相同模式的表中。例如:

private void Form1_Load(object sender, EventArgs e)
{
    var originalTable = new DataTable();
    originalTable.Columns.Add("C1");
    originalTable.Columns.Add("C2");

    //Original data
    originalTable.Rows.Add("A", "B");
    originalTable.Rows.Add("X", "Y");
    originalTable.Rows.Add("A", "B");
    originalTable.Rows.Add("X", "Y");

    //An ArrayList containing duplicate DataRow objects
    var duplicates = new System.Collections.ArrayList();
    duplicates.Add(originalTable.Rows[2]);
    duplicates.Add(originalTable.Rows[3]);

    //Create a Table having the same schema of the original table
    var duplicatesTable = originalTable.Clone();

    //Add copy of duplicates to the duplicate table
    foreach (DataRow item in duplicates)
    {
        duplicatesTable.Rows.Add(item.ItemArray);
    }
    this.dataGridView1.DataSource = duplicates;
}
注意


使用
DataTable
时,不需要使用
ArrayList
。您有不同的选项,例如使用DataTable的
Clone
方法创建具有相同架构的空DataTable,使用
copy
方法创建数据和架构的副本,使用
AsDataView
AsEnumerable
AsEnumerable()执行一些搜索
等等。

不要发布图像。不是每个人都能看到他们,这让我们更难帮助你。。。这意味着你不太可能得到一个好答案。将这些图像转换为文本块。另外。。。发布FindDuplicates()方法会有所帮助。不要发布图像。并不是每个人都能看到它们,这让它成为现实