当前位置:编程学习 > C#/ASP.NET >>

请急救treeview中的数据绑定问题!

各位哥哥们好,想请教一个问题:我有个treeview,我想让它显示数据库里的东西,是这样的,我们是用分层开发的,数据库的字段为:ID,PID,Name,其中数据访问层的方法为:

        protected virtual T[] LoadMore(string strSql)
        {
            IDataReader dr = null;
            T[] rdo = null;
            try
            {
                int count = mdbHelper.ExecuteResultCount(strSql);
                if (count < 1)
                    return null;

                rdo = new T[count];
                dr = mdbHelper.ExecuteReader(strSql);
                
                LoadToArray(rdo, dr);

                return rdo;
            }
            finally
            {
                mdbHelper.ReleaseDataReader(dr);
            }
        }

        private T[] LoadMore(string strSql, string strOrderFields, int currPage, int rowsPerPage)
        {
            strSql = mdbHelper.GetPageSql(strSql, strOrderFields, currPage, rowsPerPage);

            return LoadMore(strSql);
        }

     /// <summary>
/// 检索所有记录
/// </summary>
public T[] LoadAll()
{
            return LoadMore(Sql.GetSelectAll());
}
        public T[] LoadAll(string strOrderFields, int currPage, int rowsPerPage)
        {
            return LoadMore(Sql.GetSelectAll(), strOrderFields, currPage, rowsPerPage);
        }
        public T[] LoadAll(int currPage, int rowsPerPage)
        {
            return LoadAll("ID", currPage, rowsPerPage);
        }

/// <summary>
/// 检索指定条件的所有记录
/// 检索条件字段名(类的数据成员),
/// 字段值通过反射由SQLPlus类获取
/// 使用 = 作为比较符号,如 UserName = 'guest'
/// </summary>
public T[] LoadAll(string strFieldName)
{
            return LoadMore(Sql.GetSelect(null, strFieldName));
}

/// <summary>
/// 检索指定条件的所有记录
/// String strFieldNames 检索条件字段名列表(类的数据成员),
/// 字段值通过反射由SQLPlus类获取
/// 使用 = 作为比较符号,如 UserName = 'guest' and IsAmdin = 1
/// 检索到的所有DataObject
/// </summary>
public T[] LoadAll(string [] strFieldNames)
{
            return LoadMore( Sql.GetSelect(null, strFieldNames));
}

/// <summary>
/// 按照传入的SQL脚本检索数据
/// String strSQL,传入的SQL脚本
/// 检索到的所有DataObject
/// </summary>
public T[] LoadBySql(string strSql)
{
            return LoadMore(strSql);
}
        public T[] LoadBySql(string strSql, string strOrderFields, int currPage, int rowsPerPage)
        {
            return LoadMore(strSql, strOrderFields, currPage, rowsPerPage);
        }
        public T[] LoadBySql(string strSql, int currPage, int rowsPerPage)
        {
            return LoadBySql(strSql, "ID", currPage, rowsPerPage);
        }
请问:我怎么在treeview中实现数据绑定啊?怎么显示出来啊? --------------------编程问答-------------------- Treeview只能绑定Xml数据源吧 --------------------编程问答-------------------- 谢谢回贴,我知道只能绑定XML和站点地图数据源,但是我这个地方怎么实现啊?请教了!!!!!!!!!! --------------------编程问答-------------------- 貼段我自己的代易做图,希望對你有效

//往树里灌数据
    public void AddTree(int ParentID, TreeNode pNode)
    {
        //自己撈好DateSet ds        TreeNode tn1 = new TreeNode();
        DataView dvTree = new DataView(ds.Tables["table"]);
        //过滤ParentID,得到当前的所有子节点
         dvTree.RowFilter = "[PARENTID] = " + ParentID;
        foreach (DataRowView Row in dvTree)
        {
            if (pNode == null)
            { //添加根節點
                tn1.Text = Row["ConText"].ToString();
                tn1.Value = Row["ID"].ToString();
                TreeView1.Nodes.Add(tn1);
                tn1.Expanded = true;
                AddTree(Int32.Parse(Row["ID"].ToString()), tn1);    //再次递归
             }
            else
            {   //添加当前节点的子节点
                 TreeNode tn2 = new TreeNode();
                tn2.Text = Row["ConText"].ToString();
                tn2.Value = Row["ID"].ToString();
                //pNode.Nodes.Add(tn2);
                pNode.ChildNodes.Add(tn2);
                tn1.Expanded = true;
                AddTree(Int32.Parse(Row["ID"].ToString()), tn2);    //再次递归
            }
        }
    }
--------------------编程问答--------------------  DataView dvTree = new DataView(ds.Tables["table"]);
楼上的哥哥,你这个好像有点问题的,因为是分层写的代码,所以后台不直接写SQL语句,我看了下,你写的好像是递归的方法,我也是这样做的,可就是不知道怎么取数据,因为我的数据在数据访问层,是以数组的形式存在的,请教怎么做啊? --------------------编程问答-------------------- 请教,怎么办啊? --------------------编程问答-------------------- 数据源是数组,直接x.datasource=数组就可以拉.如果是从db.cs返回一个数组,那么就写成x.datasource=db.GetArray()
注:GetArray()返回类型是数组. --------------------编程问答-------------------- 数据源是数组,直接x.datasource=数组就可以拉???????????????????????
哥哥,这样也可以啊?treeview的数据源好像不支持这样的吧?! --------------------编程问答-------------------- 在线等啊,请急救啊!谢谢! --------------------编程问答-------------------- treeview可以不用xml绑定 
--------------------编程问答-------------------- 楼上的哥哥们,这是我写的TREEVIEW递归,方法没错啊,但是为什么提示说我的name只能存储一个字符呢,我数据库里的是20个啊,是怎么回事啊,大家看下我的代码,看看有没有错,谢谢!


 public partial class LI : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                createTreeView();
            }
        }
        private void createTreeView()
        {
            const int virtualRootID = 0;//虚拟的根结点为0;
            Department[] dep = GetDepartment();
            Department depar = new Department();
            DataTable dt = new DataTable();
            DataColumn dc = new DataColumn("ID",typeof(Int32));
            dt.Columns.Add(dc);
            dc = new DataColumn("Name", typeof(String));
            dt.Columns.Add(dc);
            dc = new DataColumn("OrganizationID", typeof(Int32));
            dt.Columns.Add(dc);
            dc = new DataColumn("LastLayerFlag", typeof(Boolean));
            dt.Columns.Add(dc);
            dc = new DataColumn("LayerCode", typeof(String));
            dt.Columns.Add(dc);
            dc = new DataColumn("PID", typeof(Int32));
            dt.Columns.Add(dc); 
            DataRow dr=dt.NewRow();
            dr["ID"] = depar.ID;
            dr["Name"] = dep[10].Name;
            dr["OrganizationID"] =dep[10].OrganizationID;
            dr["LastLayerFlag"] = dep[1].LastLayerFlag;
            dr["LayerCode"] = dep[10].LayerCode;
            dr["PID"] =dep[10].PID;
            dt.Rows.Add(dr);
            createTreeViewRecursive(TreeView1.Nodes, dt, 0);

        }
        protected Department[] GetDepartment()
        {
            return new Department().LoadAll();
        }
        private void createTreeViewRecursive(TreeNodeCollection nodes, DataTable datasource, int PID)
        {
            string filter = string.Format("PID={0};PID");
            DataRow[] drArr = datasource.Select(filter);
            TreeNode node;
            foreach (DataRow dr in drArr)
            {
                node = new TreeNode();
                nodes.Add(node);
                node.Text = (string)dr["Name"];
                createTreeViewRecursive(node.ChildNodes, datasource, (int)dr["ID"]);
                datasource.Rows.Remove(dr);
            }
        }
    }
}

--------------------编程问答-------------------- ??????
--------------------编程问答--------------------
引用 1 楼 gameboyerik001 的回复:
Treeview只能绑定Xml数据源吧

没有吧,其他数据也可以绑定
可以从数据库里读数据一个节点一个节点的添加 --------------------编程问答-------------------- 请教怎么添加啊?
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,