Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何填充BrightIdeasSoftware.TreeListView?_C#_.net_Listview_Treeview_Objectlistview - Fatal编程技术网

C# 如何填充BrightIdeasSoftware.TreeListView?

C# 如何填充BrightIdeasSoftware.TreeListView?,c#,.net,listview,treeview,objectlistview,C#,.net,Listview,Treeview,Objectlistview,我刚下载,但在填充时遇到了问题 我得到了MyObject的列表: public class MyObject { public int Id { get; set; } public int ParentId { get; set; } public string Name { get; set; } public int Data { get; set; } public MyObject(int id, int parentId, string name, int d

我刚下载,但在填充时遇到了问题

我得到了
MyObject
的列表:

public class MyObject
{
  public int Id { get; set; }
  public int ParentId { get; set; }
  public string Name { get; set; }

  public int Data { get; set; }

  public MyObject(int id, int parentId, string name, int data)
  {
     Id = id;
     ParentId = parentId;
     Name = name;
     Data = data;
  } 
}

List<MyObject> list = List<MyObject>();
这是:

this.myTreeListView.Roots = list;
但是这棵树还是空的,没有人居住,我做错了什么?请提供帮助。

您可以找到有关TreeListView的一些有用的“入门”信息。确保你理解并使用这个概念

但是,没有提到您还必须添加至少一列(您可以在设计器中这样做)。所以这可能是你的问题。TreeListView教程假定您已经知道如何使用ObjectListView

我建议您也阅读一般指南,特别是“心理换档”部分

使用ObjectListView的关键部分是配置它。通过在ObjectListView本身或列表中使用的列上设置属性,可以在IDE中完成大部分配置。有些配置无法通过属性完成:这些更复杂的配置是通过安装委托完成的(稍后将对此进行详细介绍)一旦配置了列和控件,将其付诸实施就很简单了


希望这有帮助。

我这样做。这里我给出了我的全部代码。看一看,问我你是否有任何困惑。谢谢

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form3 : Form
    {
        private List<Node> data;

        public Form3()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            InitializeData();
            FillTree();
        }

        private void InitializeData()
        {
             string connString = "Data Source=xxx.xx.xx.xx\\test;Initial Catalog=Test;User id=sa;Password=test;";
            string sql = "USP_RefundRequested";

            SqlConnection conn = new SqlConnection(connString);
            data = new List<Node>();

            try
            {
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = new SqlCommand(sql, conn);
                da.SelectCommand.CommandType = CommandType.StoredProcedure;

                DataSet ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                if (ds != null)
                {
                    if (ds.Tables.Count > 0)
                    {
                        ds.Relations.Add("ParentChild",ds.Tables[0].Columns["JID"],
                        ds.Tables[1].Columns["CID"]);

                        DataRelation orderRelation = ds.Relations["ParentChild"];
                        foreach (DataRow order in ds.Tables[0].Rows)
                        {
                            //Console.WriteLine("Subtotals for Order {0}:", order["OrderNumber"]);
                            Node parent1 = new Node( order["JID"].ToString(), "", "","","");

                            foreach (DataRow oChild in order.GetChildRows(orderRelation))
                            {
                                //Console.WriteLine("Order Line {0}: {1}", orderDetail["OrderLineNumber"], string.Format("{0:C}", orderDetail["Price"]));
                                parent1.Children.Add(new Node("", oChild["EntryDate"].ToString(),
                                    oChild["RefundDate"].ToString(),
                                    oChild["ActionBy"].ToString(),
                                    oChild["Comments"].ToString()
                                    ));
                            }
                            data.Add(parent1);

                        }
                    }
                }

            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex);
            }
            finally
            {
                conn.Close();
            }
        }

        private void FillTree()
        {

            this.treeListView1.CanExpandGetter = delegate(object x) { return ((Node)x).Children.Count > 0; };
            this.treeListView1.ChildrenGetter = delegate(object x) { return ((Node)x).Children; };

            // create the tree columns and set the delegates to print the desired object proerty
            BrightIdeasSoftware.OLVColumn JIDCol = new BrightIdeasSoftware.OLVColumn("Job ID", "JID");
            JIDCol.AspectGetter = delegate(object x) { return ((Node)x).JID; };

            BrightIdeasSoftware.OLVColumn EntryDatecol = new BrightIdeasSoftware.OLVColumn("Entry Date", "EntryDate");
            EntryDatecol.AspectGetter = delegate(object x) { return ((Node)x).EntryDate; };

            BrightIdeasSoftware.OLVColumn RefundDatecol = new BrightIdeasSoftware.OLVColumn("Refund Date", "RefundDate");
            RefundDatecol.AspectGetter = delegate(object x) { return ((Node)x).RefundDate; };

            BrightIdeasSoftware.OLVColumn ActionBycol2 = new BrightIdeasSoftware.OLVColumn("Action By", "ActionBy");
            ActionBycol2.AspectGetter = delegate(object x) { return ((Node)x).ActionBy; };

            BrightIdeasSoftware.OLVColumn Commentscol3 = new BrightIdeasSoftware.OLVColumn("Comments", "Comments");
            Commentscol3.AspectGetter = delegate(object x) { return ((Node)x).Comments; };

            // add the columns to the tree
            this.treeListView1.Columns.Add(JIDCol);
            this.treeListView1.Columns.Add(EntryDatecol);
            this.treeListView1.Columns.Add(RefundDatecol);
            this.treeListView1.Columns.Add(ActionBycol2);
            this.treeListView1.Columns.Add(Commentscol3);
            // set the tree roots
            this.treeListView1.Roots = data;

            treeListView1.Columns[1].Width = 142;
            treeListView1.Columns[2].Width = 142;
            treeListView1.Columns[3].Width = 179;
            treeListView1.Columns[4].Width = 667;
            treeListView1.Columns[treeListView1.Columns.Count - 1].Width = -2;

            treeListView1.ExpandAll();
        }


    }

    public class Node
    {
        public string _jid = "";
        public string JID
        {
            get { return _jid; }
            set { _jid = value; }
        }

        //public int _cid = 0;
        //public int CID
        //{
        //    get { return _cid; }
        //    set { _cid = value; }
        //}

        public string _entrydate;
        public string EntryDate
        {
            get { return _entrydate; }
            set { _entrydate = value; }
        }


        public string _refunddate;
        public string RefundDate
        {
            get { return _refunddate; }
            set { _refunddate = value; }
        }


        public string _actionby = "";
        public string ActionBy
        {
            get { return _actionby; }
            set { _actionby = value; }
        }

        public string _comments = "";
        public string Comments
        {
            get { return _comments; }
            set { _comments = value; }
        }

        public List<Node> _Children = null;
        public List<Node> Children
        {
            get { return _Children; }
            set { _Children = value; }
        }

        public Node(string JID, string EntryDate, string RefundDate, string ActionBy, string Comments)
        {
            this.JID = JID;
            //this.CID = CID;
            this.EntryDate = EntryDate;
            this.RefundDate = RefundDate;
            this.ActionBy = ActionBy;
            this.Comments = Comments;
            this.Children = new List<Node>();
        }
    }
}

ALTER PROC  USP_RefundRequested  
AS  

BEGIN  
;WITH  Hierarchy AS  
(  
    SELECT DISTINCT  JID  
            ,CAST(NULL AS DATETIME) EntryDate  
            ,CAST(NULL AS DATETIME) RefundDate  
            ,CAST(NULL AS VARCHAR(MAX)) Comments  
            ,CAST(NULL AS BIT) Refund  
            ,CAST(NULL AS VARCHAR(30)) ActionBy  
            ,nLevel = 1  
   ,0 AS CID  
    FROM refundrequested  
    UNION ALL  
    SELECT   CAST(NULL AS INT) JID  
            ,E.EntryDate  
            ,E.RefundDate  
            ,E.Comments  
            ,E.Refund  
            ,E.ActionBy  
            ,H.nLevel+1  
   ,H.JID  AS CID  

    FROM refundrequested   E  
    JOIN Hierarchy  H ON E.JID = H.JID  

)  

--SELECT *  
--FROM Hierarchy  WHERE CID=0
--ORDER BY COALESCE(JID, CID) DESC, nLevel  

SELECT * into #tmpHierarchy FROM Hierarchy

SELECT JID,EntryDate,RefundDate,ActionBy,Comments,CID  
FROM tmpHierarchy  WHERE CID=0
ORDER BY COALESCE(JID, CID) DESC, nLevel  

SELECT JID,EntryDate,RefundDate,ActionBy,Comments,CID  
FROM tmpHierarchy  WHERE CID>0
ORDER BY COALESCE(JID, CID) DESC, nLevel  

drop table #tmpHierarchy
END  
go
使用系统;
使用System.Collections.Generic;
使用系统组件模型;
使用系统数据;
使用System.Data.SqlClient;
使用系统图;
使用系统文本;
使用System.Windows.Forms;
命名空间Windows应用程序1
{
公共部分类表单3:表单
{
私人名单数据;
公共表格3()
{
初始化组件();
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
初始化数据();
FillTree();
}
private void InitializeData()
{
string connString=“数据源=xxx.xx.xx.xx\\test;初始目录=test;用户id=sa;密码=test;”;
字符串sql=“USP\u”;
SqlConnection conn=新的SqlConnection(connString);
数据=新列表();
尝试
{
SqlDataAdapter da=新的SqlDataAdapter();
da.SelectCommand=新的SqlCommand(sql,conn);
da.SelectCommand.CommandType=CommandType.StoredProcess;
数据集ds=新数据集();
da.填充(ds);
DataTable dt=ds.表[0];
如果(ds!=null)
{
如果(ds.Tables.Count>0)
{
ds.Relations.Add(“ParentChild”,ds.Tables[0]。列[“JID”],
表[1]。列[“CID”];
datarelationorderrelation=ds.Relations[“ParentChild”];
foreach(ds.Tables[0].行中的数据行顺序)
{
//WriteLine(“订单{0}小计:”,订单[“订单号]);
Node parent1=新节点(顺序[“JID”].ToString(),“”,“”,“”,“”,“”);
foreach(顺序中的DataRow oChild.GetChildRows(orderRelation))
{
//Console.WriteLine(“订单行{0}:{1}”、orderDetail[“OrderLineNumber”]、string.Format(“{0:C}”、orderDetail[“Price”]);
parent1.Children.Add(新节点(“,oChild[“EntryDate”])。ToString(),
oChild[“退款日期”].ToString(),
oChild[“ActionBy”].ToString(),
oChild[“Comments”].ToString()
));
}
添加数据(parent1);
}
}
}
}
捕获(例外情况除外)
{
Console.WriteLine(“错误:+ex”);
}
最后
{
康涅狄格州关闭();
}
}
私有void FillTree()
{
this.treeListView1.CanExpandGetter=委托(对象x){return((节点)x).Children.Count>0;};
this.treeListView1.ChildrenGetter=委托(对象x){return((节点)x).Children;};
//创建树列并设置代理以打印所需的对象属性
BrightIdeasSoftware.OLVColumn JIDCol=新的BrightIdeasSoftware.OLVColumn(“作业ID”、“JID”);
JIDCol.AspectGetter=委托(对象x){return((节点)x).JID;};
BrightIdeasSoftware.OLVColumn EntryDatecol=新的BrightIdeasSoftware.OLVColumn(“输入日期”、“输入日期”);
EntryDatecol.AspectGetter=委托(对象x){return((节点)x).EntryDate;};
BrightIdeasSoftware.OLV列退款日期col=新的BrightIdeasSoftware.OLV列(“退款日期”、“退款日期”);
returnDateCol.AspectGetter=委托(对象x){return((节点)x).returnDate;};
BrightIdeasSoftware.OLV列ActionBycol2=新的BrightIdeasSoftware.OLV列(“Action By”,“ActionBy”);
ActionBycol2.AspectGetter=委托(对象x){return((节点)x).ActionBy;};
BrightIdeasSoftware.OLVColumn CommentsColumn=new BrightIdeasSoftware.OLVColumn(“评论”、“评论”);
Commentscol3.AspectGetter=委托(对象x){return((节点)x).Comments;};
//将列添加到树中
this.treeListView1.Columns.Add(JIDCol);
this.treeListView1.Columns.Add(EntryDatecol);
this.treeListView1.Columns.Add(returnDateCol);
this.treeListView1.Columns.Add(ActionBycol2);
this.treeListView1.Columns.Add(Commentscol3);
//扎根
this.treeListView1.root=数据;
treeListView1.列[1].宽度=142;
treeListView1.列[2].宽度=14
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form3 : Form
    {
        private List<Node> data;

        public Form3()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            InitializeData();
            FillTree();
        }

        private void InitializeData()
        {
             string connString = "Data Source=xxx.xx.xx.xx\\test;Initial Catalog=Test;User id=sa;Password=test;";
            string sql = "USP_RefundRequested";

            SqlConnection conn = new SqlConnection(connString);
            data = new List<Node>();

            try
            {
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = new SqlCommand(sql, conn);
                da.SelectCommand.CommandType = CommandType.StoredProcedure;

                DataSet ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                if (ds != null)
                {
                    if (ds.Tables.Count > 0)
                    {
                        ds.Relations.Add("ParentChild",ds.Tables[0].Columns["JID"],
                        ds.Tables[1].Columns["CID"]);

                        DataRelation orderRelation = ds.Relations["ParentChild"];
                        foreach (DataRow order in ds.Tables[0].Rows)
                        {
                            //Console.WriteLine("Subtotals for Order {0}:", order["OrderNumber"]);
                            Node parent1 = new Node( order["JID"].ToString(), "", "","","");

                            foreach (DataRow oChild in order.GetChildRows(orderRelation))
                            {
                                //Console.WriteLine("Order Line {0}: {1}", orderDetail["OrderLineNumber"], string.Format("{0:C}", orderDetail["Price"]));
                                parent1.Children.Add(new Node("", oChild["EntryDate"].ToString(),
                                    oChild["RefundDate"].ToString(),
                                    oChild["ActionBy"].ToString(),
                                    oChild["Comments"].ToString()
                                    ));
                            }
                            data.Add(parent1);

                        }
                    }
                }

            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex);
            }
            finally
            {
                conn.Close();
            }
        }

        private void FillTree()
        {

            this.treeListView1.CanExpandGetter = delegate(object x) { return ((Node)x).Children.Count > 0; };
            this.treeListView1.ChildrenGetter = delegate(object x) { return ((Node)x).Children; };

            // create the tree columns and set the delegates to print the desired object proerty
            BrightIdeasSoftware.OLVColumn JIDCol = new BrightIdeasSoftware.OLVColumn("Job ID", "JID");
            JIDCol.AspectGetter = delegate(object x) { return ((Node)x).JID; };

            BrightIdeasSoftware.OLVColumn EntryDatecol = new BrightIdeasSoftware.OLVColumn("Entry Date", "EntryDate");
            EntryDatecol.AspectGetter = delegate(object x) { return ((Node)x).EntryDate; };

            BrightIdeasSoftware.OLVColumn RefundDatecol = new BrightIdeasSoftware.OLVColumn("Refund Date", "RefundDate");
            RefundDatecol.AspectGetter = delegate(object x) { return ((Node)x).RefundDate; };

            BrightIdeasSoftware.OLVColumn ActionBycol2 = new BrightIdeasSoftware.OLVColumn("Action By", "ActionBy");
            ActionBycol2.AspectGetter = delegate(object x) { return ((Node)x).ActionBy; };

            BrightIdeasSoftware.OLVColumn Commentscol3 = new BrightIdeasSoftware.OLVColumn("Comments", "Comments");
            Commentscol3.AspectGetter = delegate(object x) { return ((Node)x).Comments; };

            // add the columns to the tree
            this.treeListView1.Columns.Add(JIDCol);
            this.treeListView1.Columns.Add(EntryDatecol);
            this.treeListView1.Columns.Add(RefundDatecol);
            this.treeListView1.Columns.Add(ActionBycol2);
            this.treeListView1.Columns.Add(Commentscol3);
            // set the tree roots
            this.treeListView1.Roots = data;

            treeListView1.Columns[1].Width = 142;
            treeListView1.Columns[2].Width = 142;
            treeListView1.Columns[3].Width = 179;
            treeListView1.Columns[4].Width = 667;
            treeListView1.Columns[treeListView1.Columns.Count - 1].Width = -2;

            treeListView1.ExpandAll();
        }


    }

    public class Node
    {
        public string _jid = "";
        public string JID
        {
            get { return _jid; }
            set { _jid = value; }
        }

        //public int _cid = 0;
        //public int CID
        //{
        //    get { return _cid; }
        //    set { _cid = value; }
        //}

        public string _entrydate;
        public string EntryDate
        {
            get { return _entrydate; }
            set { _entrydate = value; }
        }


        public string _refunddate;
        public string RefundDate
        {
            get { return _refunddate; }
            set { _refunddate = value; }
        }


        public string _actionby = "";
        public string ActionBy
        {
            get { return _actionby; }
            set { _actionby = value; }
        }

        public string _comments = "";
        public string Comments
        {
            get { return _comments; }
            set { _comments = value; }
        }

        public List<Node> _Children = null;
        public List<Node> Children
        {
            get { return _Children; }
            set { _Children = value; }
        }

        public Node(string JID, string EntryDate, string RefundDate, string ActionBy, string Comments)
        {
            this.JID = JID;
            //this.CID = CID;
            this.EntryDate = EntryDate;
            this.RefundDate = RefundDate;
            this.ActionBy = ActionBy;
            this.Comments = Comments;
            this.Children = new List<Node>();
        }
    }
}

ALTER PROC  USP_RefundRequested  
AS  

BEGIN  
;WITH  Hierarchy AS  
(  
    SELECT DISTINCT  JID  
            ,CAST(NULL AS DATETIME) EntryDate  
            ,CAST(NULL AS DATETIME) RefundDate  
            ,CAST(NULL AS VARCHAR(MAX)) Comments  
            ,CAST(NULL AS BIT) Refund  
            ,CAST(NULL AS VARCHAR(30)) ActionBy  
            ,nLevel = 1  
   ,0 AS CID  
    FROM refundrequested  
    UNION ALL  
    SELECT   CAST(NULL AS INT) JID  
            ,E.EntryDate  
            ,E.RefundDate  
            ,E.Comments  
            ,E.Refund  
            ,E.ActionBy  
            ,H.nLevel+1  
   ,H.JID  AS CID  

    FROM refundrequested   E  
    JOIN Hierarchy  H ON E.JID = H.JID  

)  

--SELECT *  
--FROM Hierarchy  WHERE CID=0
--ORDER BY COALESCE(JID, CID) DESC, nLevel  

SELECT * into #tmpHierarchy FROM Hierarchy

SELECT JID,EntryDate,RefundDate,ActionBy,Comments,CID  
FROM tmpHierarchy  WHERE CID=0
ORDER BY COALESCE(JID, CID) DESC, nLevel  

SELECT JID,EntryDate,RefundDate,ActionBy,Comments,CID  
FROM tmpHierarchy  WHERE CID>0
ORDER BY COALESCE(JID, CID) DESC, nLevel  

drop table #tmpHierarchy
END  
go