数据源未正确绑定到DataGridView

时间:2014-07-24 11:41:54

标签: c# datagridview

我正在尝试将名为FileGridView的DataGridView的数据源设置为名为List<object>的{​​{1}},其中包含filesAndDirectories个对象和{{1}的列表对象,其中的变量如下所示:

DirectoryProperties

DirectoryProperties

FileProperties

FileProperties

将数据源绑定到数据源

private string _directoryname;
private string _directorytype;
private string _directorysize;
private string _dateCreated;
private string _dateModified;

当此列表作为private string _filename; private string _filetype; private string _filesize; private string _dateCreated; private string _dateModified; 的数据源传递时,不会显示任何数据。但是,奇怪的是,显示了显示数据的正确行数和列数。

关于我做错了什么的任何想法?该列表显然有一些影响,我只是不确定为什么网格没有更新。

FileGridView属性

FileGridView.DataSource = files;

项目链接

https://dl.dropboxusercontent.com/u/14954037/SharpManager.rar

3 个答案:

答案 0 :(得分:2)

此:

private string _filename;

是一个私人领域。您必须使它们成为公共属性,以便DataGridView正确使用它们:

public string Filename {get; set; }

如果您的列已存在于DataGridView控件中,则必须在设置网格的DataSource属性之前分配class属性:

dataGridView1.Columns[0].DataPropertyName = "Filename";

答案 1 :(得分:1)

如果AutoGenerateColumns为true,DataGridView将自动生成列,默认情况下,它只会为公共属性生成列,而不是为您的私有字段生成列。

这可以解释为什么你的控件知道你的元素数量,而不知道如何显示它们。

编辑:

好的,我设法得到了一些数据。拥有公共财产似乎是必要的,

public string _directoryname { get; set; } 

有效,

private string _directoryname; 

没有。此外,列表中的FileProperties和DirectoryProperties最初都可以工作,但是当您向下滚动以实际显示directoryproperties时会崩溃。您应该创建一个基类或接口,您的类继承/实现,包含您需要显示它们的内容。

答案 2 :(得分:0)

List没有实现IBindingList,因此网格不知道您的新项目。

将DataGridView绑定到BindingList。

var blist = new BindingList<object>(your_file_list);
myGrid.DataSource = blist;