如何在C#中向ObjectListView添加项目

时间:2015-09-23 11:57:23

标签: c# listview objectlistview subitem

我最近尝试将ObjectListView添加到我的项目而不是普通的ListView。但我无法将Items或SubItems添加到ObjectListView。当我尝试用这段代码填充它时,ObjectListView总是空的:

 while (dr.Read())
            {
                OLVListItem item = new OLVListItem(dr["tn"].ToString());
                item.SubItems.Add(dr["title"].ToString());
                item.SubItems.Add(tickettime.ToString());
                item.SubItems.Add(Convert.ToDateTime(dr["date"]).ToString("dd.MM.yyyy"));
                item.SubItems.Add(dr["schlange"].ToString());
                item.SubItems.Add(dr["vorname"].ToString() + " " + dr["nachname"].ToString());

                Objectlistview.AddObject(item);
            }

你可以帮助我或给我一些有用的命令来一般性地添加子项目或项目。

1 个答案:

答案 0 :(得分:0)

我在TreeListView上运气更好。

最好有一个对象列表。您对此列表进行了更改,然后使用“SetObjects”将这些更改反映到TreeListView。

如果列表中的每个对象都有一个变量(例如名称),那么这些变量必须反映在“Aspect Name”下的TreeListView列中,以便显示它们。

主列表中的每个对象都应该有自己的列表。这是否要显示子项目。

    public Form1()
    {
        InitializeComponent();
        // model is the currently queried object, we return true or false according to the amount of children we have in our Children List
        trLstVwResults.CanExpandGetter = model => ((MyClass)model).
                                                      Children.Count > 0;
        // We return the list of Children that shall be considered Children.

        trLstVwResults.ChildrenGetter = delegate(object model)
        {
            return ((MyClass)model).Children;
        }; 
    }

            private void btnAdd_Click(object sender, EventArgs e)
    {
        var MyClasses = new List<MyClass>();
        MyClasses.Add(new MyClass("Bob"));
        MyClasses.Add(new MyClass("John"));

        var mikeClass = new MyClass("Mike");

        var joeClass = new MyClass("Joe");

        mikeClass.addChildren(joeClass);

        MyClasses.Add(mikeClass);

        trLstVwResults.SetObjects(MyClasses);
    }

该类看起来如下:

public class MyClass
{
    public string Name { get; set; }
    public List<MyClass> Children { get; set; }
    public MyClass(string name)
    {
        Name = name;
        Children = new List<MyClass>();
    }

    public void addChildren(MyClass tt)
    {
        Children.Add(tt);
    }
}

(不要忘记在属性中设置方面名称)