FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 5813|回复: 10
打印 上一主题 下一主题

tree 绑定问题

[复制链接]
跳转到指定楼层
楼主
发表于 2013-8-1 10:16:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请各位大神帮帮忙:例子里树形菜单是读取menu.xml文件的,那要如何从数据库读取,最好有代码,否则我不懂的。我很菜的,只会照搬 不会变通。。。
沙发
发表于 2013-8-1 10:29:50 | 只看该作者
板凳
 楼主| 发表于 2013-8-1 11:11:59 | 只看该作者
例子是这个:

        private void LoadData()
        {
            // 模拟从数据库返回数据表
            DataTable table = CreateDataTable();

            DataSet ds = new DataSet();
            ds.Tables.Add(table);
            ds.Relations.Add("TreeRelation", ds.Tables[0].Columns["Id"], ds.Tables[0].Columns["ParentId"]);

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                if (row.IsNull("ParentId"))
                {
                    TreeNode node = new TreeNode();
                    node.Text = row["Text"].ToString();
                    node.Expanded = true;
                    Tree1.Nodes.Add(node);

                    ResolveSubTree(row, node);
                }
            }
        }



我换成:

  private void LoadData()
        {
            // 模拟从数据库返回数据表         

            DataSet ds =bll.GetList("");
            ds.Relations.Add("TreeRelation", ds.Tables[0].Columns["ID"], ds.Tables[0].Columns["ParentID"]);
            foreach (DataRow row in ds.Tables[0].Rows)
            {
                if (row.IsNull("ParentID"))
                {
                    TreeNode node = new TreeNode();
                    node.Text = row["Title"].ToString();
                    node.Expanded = true;
                    treeMenu.Nodes.Add(node);
                    ResolveSubTree(row, node);
                }
               
            }
        }

就报错:ds.Relations.Add("TreeRelation", ds.Tables[0].Columns["ID"], ds.Tables[0].Columns["ParentID"]);(不能启用此约束,因为不是所有的值都具有相应的父值。)
是不是
地板
 楼主| 发表于 2013-8-1 17:17:09 | 只看该作者
用另外的方法解决了。。。
5#
发表于 2013-9-6 14:43:52 | 只看该作者
请问是如何实现的?
我也遇到相同问题!
7#
发表于 2013-9-7 11:00:19 | 只看该作者
解决了就跑了。也不分享下过程,鄙视啊。
8#
发表于 2013-10-24 17:00:51 | 只看该作者
我来唠叨几句tree绑定数据库的问题:
仅dome来看,数据库结构如此:
ID               Text          ParentId
China           中国          NULL
henan          河南         China
zhumadian    驻马店      henan
……
由此可以看出,需要Id列对应 parentid列,否则会出现“不能启用此约束,因为不是所有的值都具有相应的父值。”
9#
 楼主| 发表于 2014-2-13 15:30:15 | 只看该作者
问题是我也不太懂。。我照抄来的。。。
public partial class oBo_NavForDeveloper
        {
                public oBo_NavForDeveloper()
                {}
                #region Model
                private int _id;
                private int _parentid;
                private string _title;
                private string _url;
                private bool _isenabled;
                private int? _sort;
                private string _remark;}
10#
 楼主| 发表于 2014-2-13 15:31:28 | 只看该作者
   private static void DoLaodTree(FineUI.Tree tree,
            bool EnableCheckBox = false,
            bool AutoPostBack = false,
            bool Expanded = true,
            bool LoadAllNodeFirst = false,
            bool IsLoadByDuty = false)
        {
            Obosoft.BLL.oBo_NavForDeveloper bll = new BLL.oBo_NavForDeveloper();
            DataSet ds = bll.GetList("");

            List<string> listMenu = new List<string>();

            if (IsLoadByDuty == true)
            {
                listMenu = GetDutyList();
            }

            if (ds != null && ds.Tables[0].Rows.Count > 0)
            {
                tree.Nodes.Clear();

                FineUI.TreeNode topNode = new FineUI.TreeNode(); ;

                if (LoadAllNodeFirst == true)
                {
                    topNode.SingleClickExpand = true;
                    topNode.Text = "全部";
                    topNode.NodeID = "Total";
                    topNode.EnableCheckBox = EnableCheckBox;
                    topNode.AutoPostBack = true;
                    topNode.Expanded = Expanded;

                    tree.Nodes.Add(topNode);
                }

                DataRow[] data = ds.Tables[0].Select("ParentID = 0 ", "Sort");

                foreach (DataRow drRow in data)
                {
                    int id = Util.ToInt(drRow["ID"]);
                    string title = Util.ToStr(drRow["TITLE"]);
                    string parentID = Util.ToStr(drRow["PARENTID"]);
                    int Rank = Util.ToInt(drRow["REMARK"]);
                    int Sort = Util.ToInt(drRow["SORT"]);

                    FineUI.TreeNode parentNode = new FineUI.TreeNode();
                    parentNode.SingleClickExpand = true;
                    parentNode.Text = title;

                    //设置是否显示单选框
                    parentNode.EnableCheckBox = EnableCheckBox;
                    parentNode.NodeID = id.ToString();
                    parentNode.AutoPostBack = true;
                    parentNode.Expanded = Expanded;

                    //如果根据权限读取树节点 并且当前节点不在能打开的权限列表中 则不执行添加节点操作
                    if (IsLoadByDuty == true && listMenu.Contains(id.ToString()) == false)
                    {
                        continue;
                    }

                    if (LoadAllNodeFirst == true)
                    {
                        topNode.Nodes.Add(parentNode);
                    }
                    else
                    {
                        tree.Nodes.Add(parentNode);
                    }

                    LoadProductTypeTree(ds, parentNode, id.ToString(), EnableCheckBox, AutoPostBack, Expanded, IsLoadByDuty);
                }
            }
        }


    /// <summary>
        /// 获取当前用户可访问权限列表
        /// </summary>
        /// <returns></returns>
        private static List<string> GetDutyList()
        {
            //加载当前用户所拥有的权限列表
            List<string> listMenu = new List<string>();
            //如果根据权限读取树
            //if (Util.IsNullOrEmpty(System.Web.HttpContext.Current.Session[SessionNames.UserData]) == false)
            //{               
                Obosoft.Model.oBo_AdminGroup adminGroupModel = new Obosoft.Model.oBo_AdminGroup();            
                BLL.oBo_Admin bll = new BLL.oBo_Admin();               
                BLL.oBo_AdminGroup logic = new BLL.oBo_AdminGroup();
                int ID = Util.ToInt(System.Web.HttpContext.Current.Session["ID"]);
                Model.oBo_Admin model = bll.GetModel(ID);
                if (Util.IsNullOrEmpty(model) == false)
                {
                    DataSet dsDuty = logic.GetList(" id in (" + model.AdmPower + ")");
                    if (Util.IsDataSetHasDataRow(dsDuty) == true)
                    {
                        string strDutys = Util.GetFirstRowValue(dsDuty, Model.oBo_AdminGroup_Def.m_PowerList_Def);
                        string[] menus = strDutys.Replace("[", "").Replace("]", "").Split(',');
                        foreach (string item in menus)
                        {
                            listMenu.Add(item);
                        }
                    }
                }

                if (listMenu.Count <= 0)
                {
                    //Model.oBo_AdminGroup dutyModel = logic.GetModel(4);
                    //string[] menus = dutyModel.PowerList.Replace("[", "").Replace("]", "").Split(',');
                    //foreach (string item in menus)
                    //{
                    //    listMenu.Add(item);
                    //}
                }
            //}

            return listMenu;
        }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-1 10:20 , Processed in 0.049824 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表