C# 使用列表填充ObjectListView
我正在尝试使用列表从ObjectListView库填充DataTreeListView。不幸的是,我无法实现它,即使列表中有项目计数,也没有显示任何内容C# 使用列表填充ObjectListView,c#,datasource,objectlistview,C#,Datasource,Objectlistview,我正在尝试使用列表从ObjectListView库填充DataTreeListView。不幸的是,我无法实现它,即使列表中有项目计数,也没有显示任何内容 Class.cs public class Class { protected string xName; protected int xId; protected int xParentId; protected int happinessStatus; protected int salaryStatu
Class.cs
public class Class
{
protected string xName;
protected int xId;
protected int xParentId;
protected int happinessStatus;
protected int salaryStatus;
public Class()
{
this.xName = "";
this.xId = 0;
this.xParentId = 0;
this.happinessStatus = 0;
this.salaryStatus = 0;
}
public String Name
{
get { return this.xName; }
set { this.xName = value; }
}
public int Id
{
get { return this.xId; }
set { this.xId = value; }
}
public int ParentId
{
get { return this.xParentId; }
set { this.xParentId = value; }
}
public int HappinessStatus
{
get {return this.happinessStatus; }
set { this.happinessStatus = value; }
}
public int SalaryStatus
{
get { return this.salaryStatus; }
set { this.salaryStatus = value; }
}
public static List<Class> GetList()
{
List<Class> oList = new List<Class>();
Class oClass = new Class();
oClass.Name = "Person A";
oClass.Id = 1;
oClass.ParentId = 0;
oClass.HappinessStatus = 1;
oClass.SalaryStatus = 1000;
oList.Add(oClass);
oClass.Name = "Person B";
oClass.Id = 2;
oClass.ParentId = 1;
oClass.HappinessStatus = 1;
oClass.SalaryStatus = 2000;
oList.Add(oClass);
oClass.Name = "Person C";
oClass.Id = 3;
oClass.ParentId = 1;
oClass.HappinessStatus = 1;
oClass.SalaryStatus = 1000;
oList.Add(oClass);
return oList;
}
Class.cs
公共课
{
受保护的字符串名称;
受保护的int-xId;
受保护的int-xParentId;
受保护的幸福状态;
受保护的工薪阶层;
公共类()
{
this.xName=“”;
这是0.xId=0;
this.xParentId=0;
此参数为0.happinessStatus=0;
this.salaryStatus=0;
}
公共字符串名
{
获取{返回this.xName;}
设置{this.xName=value;}
}
公共整数Id
{
获取{返回this.xId;}
设置{this.xId=value;}
}
公共int父ID
{
获取{返回this.xParentId;}
设置{this.xParentId=value;}
}
公共幸福状况
{
获取{返回this.happinessStatus;}
设置{this.happinessStatus=value;}
}
公共工薪阶层
{
获取{返回this.salaryStatus;}
设置{this.salaryStatus=value;}
}
公共静态列表GetList()
{
List oList=新列表();
类oClass=新类();
oClass.Name=“个人A”;
oClass.Id=1;
oClass.ParentId=0;
oClass.HappinessStatus=1;
oClass.SalaryStatus=1000;
添加(oClass);
oClass.Name=“人员B”;
oClass.Id=2;
oClass.ParentId=1;
oClass.HappinessStatus=1;
oClass.SalaryStatus=2000;
添加(oClass);
oClass.Name=“个人C”;
oClass.Id=3;
oClass.ParentId=1;
oClass.HappinessStatus=1;
oClass.SalaryStatus=1000;
添加(oClass);
回归寡头;
}
在主窗体的加载事件上
我做了以下工作:
List<Class> list = new List<Class>();
list = Class.GetList();
dataTreeListView1.DataSource = list;
List List=新列表();
list=Class.GetList();
dataTreeListView1.DataSource=列表;
在designer视图中,我还创建了一些列,这些列将aspect name设置为类文件的每个属性,Id和ParentId除外
KeyAspectName:Id
ParentKeyAspectName:ParentId
我做了一个小消息框来显示列表中项目的计数,它是正确的,但在dataTreeListView控件上没有显示任何内容
我可以知道我的编码有什么问题吗?您是否相应地设置了
keyapectname
、parentkeyapectname
和RootKeyValue
如果使用设计器执行此操作,RootKeyValue
可能是您的问题:
由于IDE中设计器的限制,只能通过IDE为RootKeyValue指定字符串值。如果ParentKey不是string类型,则必须通过代码设置其值
由于父键的类型为int
use
dataTreeListView1.RootKeyValue = 0;
请注意,与基本OLV不同,您不需要手动添加列。如果要隐藏键列,请设置ShowKeyColumns=false
编辑:
代码中还有一个错误。添加对象的同一实例
oClass
3次。使用oClass=new Class()
在初始化新人之前。这个Winforms,WPF,Asp.Net是什么平台?dataTreeListView1.RootKeyValue=0;成功了,谢谢你的大力帮助!@user3167398我遇到了一些问题我无法在datatreelistview上显示内容。你能帮我一下吗?我遇到了一些问题,我无法在datatreelistview上显示内容elistview你能帮我吗?我做了和你一样的事情所有代码都和你一样,但是我得到了一个带有列名但没有内容的树列表视图