我有一个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;
}
这让我完全难过。任何帮助或建议将不胜感激。
答案 0 :(得分:1)
当您将包含DataRow
DataSource
DataGridView
的数组列表设置为RowError | RowState | Table | HasErrors
时,您会看到以下列:
DataGridView
这是因为DataRow
会显示DataTable
的可浏览属性。
但为什么DataView
中的相同行会按预期显示列?
这是因为用于数据绑定的DataTable
的{{1}}实现了ITypedList
接口,该接口提供了发现可绑定列表的模式的功能,其中可用于绑定的属性与要绑定的对象的公共属性不同。实际上,它返回一个PropertyDescriptorCollection
,其中包含一些基于Columns
DataTable
创建的属性描述符。