ArrayList作为DataGridView的数据源不显示数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ArrayList作为DataGridView的数据源不显示数据相关的知识,希望对你有一定的参考价值。

我有一个DataGridView,它有一个视图作为它的数据源(SQL Server)。无论我做什么,我都无法读取/写入该视图,因此我正在尝试解决它。我需要使一列可编辑,所以我想我可以创建一个ArrayList并将其设置为数据源。现在我的DGV中没有数据,尽管我的ArrayList确实包含35行和4列数据。这是我的代码:

// get the data from the Table adapter, put it into an ArrayList then display it in the DataGridView -- called from Load()

private void FillReportDistributionTX()
{
    DataTable dt = this.dLV_ReportDistributionTableAdapter.GetData();
    DGVlist = ConvertDTtoArray(ref dt);
    dLV_UserReportsDataGridView.DataSource = DGVlist;
    dLV_UserReportsDataGridView.Refresh();
 }

// convert to Array
public ArrayList ConvertDTtoArray(ref DataTable dt)
{
    ArrayList converted = new ArrayList(dt.Rows.Count);
    foreach (DataRow row in dt.Rows)
    {
        converted.Add(row);
    }

    return converted;

}

这让我完全难过。任何帮助或建议将不胜感激。

答案

当您将包含一些DataRow的数组列表设置为DataSourceDataGridView时,您将看到以下列:

RowError | RowState | Table | HasErrors

那是因为DataGridView将显示DataRow的可浏览属性。

但是为什么DataTable中的相同行显示了预期的列?

这是因为用于数据绑定的DataViewDataTable实现了ITypedList接口,该接口提供了发现可绑定列表的模式的功能,其中可用于绑定的属性与要绑定的对象的公共属性不同。实际上它返回一个包含一些属性描述符的PropertyDescriptorCollection,这些属性描述符是基于ColumnsDataTable创建的。

以上是关于ArrayList作为DataGridView的数据源不显示数据的主要内容,如果未能解决你的问题,请参考以下文章

C#中datagridview如何绑定ArrayList集合?

c#里面arraylist中有792*5个数,我需要每5个数为一组取出,并且绑定到datagridview中去,如何写?求代码

C# Winform中 选中DatagridView控件中某行如何将该行某个字段(1,2,3,4,)的值绑定CheckedListBox控件的数

程序创建一个ArrayList,添加1到10的10个随机数,删除大于5的数 java

datagridview中使用DataGridViewComboBoxColumn

datagridview中使用DataGridViewComboBoxColumn