我正在尝试将名为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
答案 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;