Smobiler上海石磨_.NET移动开发平台

标题: 为何控件treeView1动态生成数据后老半天才出来,谢谢! [打印本页]

作者: zycsoftware    时间: 2019-4-14 22:09
标题: 为何控件treeView1动态生成数据后老半天才出来,谢谢!
为何控件treeView1动态生成数据后老半天才出来,数据记录只有300多笔,谢谢!

作者: Lula.Jin    时间: 2019-4-15 16:29
n那具体是要多久加载出来呢?你的代码怎么写的?
作者: zycsoftware    时间: 2019-4-15 23:51
您好!以下是我的代码,帮看看问题出在哪,谢谢!
        private void Bind()
        {
            try
            {
                treeView1.Nodes.Clear();
                SqlConnection Con = new SqlConnection(Gloable.YJ_ConnectionString);
                Con.Open();
                string sql = "SELECT MA001, MA002, MA003 FROM EDMMA ORDER BY MA001";
                SqlDataAdapter sqlda = new SqlDataAdapter(sql, Con);
                sqlda.SelectCommand.CommandTimeout = Gloable.CommandTimeOut;
                DataSet ds = new DataSet();
                sqlda.Fill(ds);
                DataTable dt = ds.Tables[0];
                DataRow[] dr = dt.Select("MA003=''");
                for (int i = 0; i < dr.Length; i++)
                {
                    TreeViewNode Node = new TreeViewNode();
                    Node.Checked = false;
                    Node.Text = dr[i]["MA002"].ToString();
                    Node.Value = dr[i]["MA001"].ToString();
                    FillTree(Node, dt);
                    treeView1.Nodes.Add(Node);
                }
                ds.Clone();
                Con.Close();
                treeView1.CollapseAll();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private void FillTree(TreeViewNode node, DataTable dt)
        {
            DataRow[] drr = dt.Select("MA003='" + node.Value.ToString() + "'");
            if (drr.Length > 0)
            {
                for (int i = 0; i < drr.Length; i++)
                {
                    TreeViewNode child = new TreeViewNode();
                    child.Checked = false;
                    child.Text = drr[i]["MA002"].ToString();
                    child.Value = drr[i]["MA001"].ToString();
                    if (drr[i]["MA003"].ToString() == node.Value.ToString())
                    {
                        FillTree(child, dt);
                    }
                    node.Nodes.Add(child);
                }
            }
        }

作者: Lula.Jin    时间: 2019-4-16 14:14
经测试加载确实比较慢,treeview是自定义控件组合的,并没有优化显示性能,使用listview,gridview代替,并做分页处理
作者: zycsoftware    时间: 2019-4-16 15:59
您好!,这么好的控件建议你们优化下,谢谢!
作者: csfeixia    时间: 2019-9-21 23:50
Lula.Jin 发表于 2019-4-16 14:14
经测试加载确实比较慢,treeview是自定义控件组合的,并没有优化显示性能,使用listview,gridview代替,并 ...

做权限这块的话,好像只能tree吧
作者: Lula.Jin    时间: 2019-9-23 11:14
csfeixia 发表于 2019-9-21 23:50
做权限这块的话,好像只能tree吧

权限的话你可以根据登录账号的角色显示对应的界面的,和控件无关,你可以看下smoone的
作者: csfeixia    时间: 2019-9-23 21:34
Lula.Jin 发表于 2019-9-23 11:14
权限的话你可以根据登录账号的角色显示对应的界面的,和控件无关,你可以看下smoone的 ...

smoone里面有权限这块吗?还真没有发现,能发个窗体名称吗?我这确实没找到,主要是要控制里面的修改、删除
作者: Lula.Jin    时间: 2019-9-24 09:30
例如frmWork.cs根据role显示不同的菜单




欢迎光临 Smobiler上海石磨_.NET移动开发平台 (https://www.smobiler.com/) Powered by Discuz! X3.2