显示DataGridView / ListView上的对象列表

时间:2017-10-10 05:42:19

标签: c# .net list datagridview datasource

我在一个类中有一个List,它从.txt文件加载数据,该文件然后将数据存储在另一个包含构造函数和所有类的对象中。在我的表单中,我需要在DataGridView / ListView中显示所有数据,以便我可以查看它,根据需要选择并进行更改。

但是,当我在表单上执行此操作时,没有任何作用,或者它只会在顶部显示构造函数名称,但不会填充任何数据。我已经筋疲力尽了所有选项,谷歌左右和中心,似乎没有方法工作。试过像DataSource =<“class”> .theList这样的东西。即使尝试过DataBindings等,但似乎没有任何效果。它给出了一个错误,如<“class”> .theList不能像方法一样使用

呼吁Stack OverFlow的伟大人物帮助我朝着正确的方向前进。提前谢谢大家!

修改 我已经粘贴了一些示例代码,有关它的任何问题请随时询问。谢谢你们。

public class Form{
    private void form_Load()
    {
        Wrapper wrap = new Wrapper();
        List<Child> tempList = new List<Child>();
        tempList = wrap.cList;

        dataGridView1.DataSource = tempList;
    }
}

class Wrapper{
    public List<Child> cList = new List<Child>();

    public void LoadPerson()
    {
        string filePath = @"filepath";
        //StreamReader
        //code to Add each different person + their details into the 
        protected fields
        //stores in cList variables which are in Adult
    }
}

class Adult{
    protected string username, firstName;
    protected int number;
}

class Child: Adult{

    public Child(string Username, string Password, int Number)
    {
        username = Username;
        password = Password;
        number = Number;
    }
    //public getters/setters next
}

2 个答案:

答案 0 :(得分:0)

如果没有看到您的代码,很难看出问题是什么!

但是我想建议另一种方法,如果你想查看对象,那么ObjectListView是一种替代解决方案。

http://objectlistview.sourceforge.net/cs/index.html

这是一个列表视图而不是数据网格视图,但您只需将对象的集合传递给它,它就会显示给您。

它也非常强大,可以让你自定义很多东西。

答案 1 :(得分:0)

如果没有代码和数据样本,很难给出好的建议。

我将使用以下方式从您拥有的数据中创建DataTable(代码需要根据您构建的数据结构进行修改):

VB.NET:

Dim dt as New Datatable
dt.Columns.Add("ID", GetType(Integer))
dt.Columns.Add("Name", GetType(String))

For ir = 0 to <SRC>.rows.count -1     ' modify to which ever way you can go through your data
    dt.Rows.Add(<SRC>("ID"), <SRC>("name"))
Next

Me.DataGridView1.datasource = dt

C#:

Datatable dt = new Datatable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));

for (ir = 0; ir <= <SRC>.rows.count - 1; ir++) {
    // modify to which ever way you can go through your data
    dt.Rows.Add(<SRC>("ID"), <SRC>("name"));
}

this.DataGridView1.datasource = dt;