首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • TreeView 中 CheckBox 根据子符串勾选对应的副选框 [已结贴,结贴人:shenhui_163]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-25 08:51:43 楼主
        我想问一个问题,就是我有一个TreeView控件其中CheckBox已经可以实现联动操作.我现在想让它有编辑功能.也就是说我想读进来一个字符串(1,2,43,44,3,49,4,53)和数中节点的Value 数值进行比较.如果两个数值相等,那么就让其对应勾选的副选框被选中.其中数型控件读取数据是这样的
          public void LoadData(String strNodeValue)       
            {
            TreeView1.Nodes.Clear();

            DataTable DT = new DataTable();
            Manageuse M = new Manageuse();

            M.FileID = 0;

            DT = M.TreeView1DataBind();

            foreach (DataRow treeRowRoot in DT.Rows)
            {
                TreeNode rootNode = new TreeNode();

                rootNode.Text = treeRowRoot["FilesName"].ToString();
                rootNode.Value = treeRowRoot["FileID"].ToString();

                TreeView1.Nodes.Add(rootNode);

                int pid = int.Parse(treeRowRoot["FileID"].ToString());

                CreateNode(rootNode, pid);
            }

            TreeNode tnCurrentNode = TreeView1.FindNode(strNodeValue);

            if (tnCurrentNode != null)
            {
                //获得焦点
                tnCurrentNode.Select();
                TreeNode tmp = tnCurrentNode;

                tmp.ExpandAll();
                while (tmp.Parent != null)
                {
                    tmp = tmp.Parent;
                    tmp.ExpandAll();
                }
            }
        }

        public void CreateNode(TreeNode parentnode, int preID)
        {
            DataTable DT = new DataTable();
            Manageuse M = new Manageuse();

            M.FileID = preID;

            DT = M.TreeView1DataBind();

            foreach (DataRow rw in DT.Rows)
            {
                TreeNode childnode = new TreeNode();
                childnode.Text = rw["FilesName"].ToString();
                childnode.Value = rw["FileID"].ToString();

                parentnode.ChildNodes.Add(childnode);

                int pid = int.Parse(rw["FileID"].ToString());
                CreateNode(childnode, pid);
            }
        }
    我应该怎么做.另有Q币相赠
    30  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Eddie005
    • 等级:
    发表于:2008-04-25 09:40:481楼 得分:30
    protected void Page_Load(object sender, EventArgs e)
        {
            string strNodeValue = "1,2,43,44,3,49,4,53";
            if (!IsPostBack) LoadData(strNodeValue);
        }
        public void LoadData(String strNodeValue)
        {
            strNodeValue = "," + strNodeValue + ",";
            TreeView1.Nodes.Clear();

            DataTable DT = new DataTable();
            #region 模拟一些测试数据
            //注:数据从数据读取一次就够了,没必要在递归调用中多次读取-这样性能太低
            DT.Columns.Add("FilesName");
            DT.Columns.Add("FileID");
            DT.Columns.Add("PreID");
            DT.Rows.Add(new object[] {"aaaaa",1,0 });
            DT.Rows.Add(new object[] { "bbbbb", 2, 0 });
            DT.Rows.Add(new object[] { "ccccc", 3, 0 });
            DT.Rows.Add(new object[] { "eeeee", 4, 0 });
            DT.Rows.Add(new object[] { "fffff", 5, 0 });
            DT.Rows.Add(new object[] { "ggggg", 6, 10 });
            DT.Rows.Add(new object[] { "hhhhh", 7, 1 });
            DT.Rows.Add(new object[] { "iiiii", 8, 1 });
            DT.Rows.Add(new object[] { "jjjjj", 9, 3 });
            DT.Rows.Add(new object[] { "kkkkk", 10, 2 });
            DT.Rows.Add(new object[] { "llllll", 11, 10 });
            DT.Rows.Add(new object[] { "mmmmmm", 43, 2 });
            DT.Rows.Add(new object[] { "nnnnnn", 44, 2 });
            DT.Rows.Add(new object[] { "oooooo", 53, 4 });
            DT.AcceptChanges();
            #endregion

            DataRow[] rows = DT.Select("[preID]=0");
            foreach (DataRow treeRowRoot in rows)
            {
                TreeNode rootNode = new TreeNode();

                rootNode.Text = treeRowRoot["FilesName"].ToString();
                rootNode.Value = treeRowRoot["FileID"].ToString();

                TreeView1.Nodes.Add(rootNode);
                int pid = int.Parse(treeRowRoot["FileID"].ToString());
                DT.Rows.Remove(treeRowRoot);

                if (strNodeValue.IndexOf("," + pid.ToString() + ",") > -1)
                    rootNode.Checked = true;

                CreateNode(rootNode, pid, DT, strNodeValue);
            }

           
        }

        public void CreateNode(TreeNode parentnode, int preID, DataTable DT, string strNodeValue)
        {
            DataRow[] rows = DT.Select("[preID]='"+preID.ToString()+"'");
            foreach (DataRow rw in rows)
            {
                TreeNode childnode = new TreeNode();
                childnode.Text = rw["FilesName"].ToString();
                childnode.Value = rw["FileID"].ToString();

                parentnode.ChildNodes.Add(childnode);
                int pid = int.Parse(rw["FileID"].ToString());
                DT.Rows.Remove(rw);

                if (strNodeValue.IndexOf("," + pid.ToString() + ",") > -1)
                {
                    childnode.Parent.Expand();
                    childnode.Checked = true;
                }

                CreateNode(childnode, pid, DT, strNodeValue);
            }
        }
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved