解决treeview绑定节点多少频繁刷新可以使用有变化时才绑定

来源:互联网 发布:绵阳师范网络管理系统 编辑:程序博客网 时间:2024/04/29 18:02
      public void ThrseReloadTreeView(TreeView tv, DataTable dt)        {            var newList = new List<TreeNode>();            for (int i = 0; i < dt.Rows.Count; i++)            {                TreeNode Inode = new TreeNode();                Inode.ImageIndex = 0;                Inode.Text = dt.Rows[i]["NO"].ToString();                newList.Add(Inode);            }            var oldList = tv.Nodes.Cast<TreeNode>().ToList();//老的节点数据源            //是否改变            bool itemChanged = false;            //是否个数相同            bool isSameCount = newList.Count == oldList.Count;            if (isSameCount) //如果个数相同:比较项是否变化了            {                //久数据源判断新数据源                               //1个数有变化:是新增了车还是删除了车                foreach (var item in oldList)                {                    if (!newList.Any(x => x.Text == item.Text))                    {                        //有变化                        itemChanged = true;                        break;                    }                }                if (!itemChanged)                {                    foreach (var item in newList)                    {                        if (!oldList.Any(x => x.Text == item.Text))                        {                            //有变化                            itemChanged = true;                            break;                        }                    }                }                //判断顺序                var orderOld = string.Join(",", oldList.Select(x => x.Text).ToArray());                var orderNew = string.Join(",", newList.Select(x => x.Text).ToArray());                itemChanged = orderOld != orderNew;            }            else            {                     //个数有变化                itemChanged = true;                //判断顺序                var orderOld = string.Join(",", oldList.Select(x => x.Text).ToArray());                var orderNew = string.Join(",", newList.Select(x => x.Text).ToArray());                itemChanged = orderOld != orderNew;                if (itemChanged)                {                    string[] sArray = orderOld.Split(',');                    string[] ArrayorderNew = orderNew.Split(',');                    if (sArray.Length > ArrayorderNew.Length)                    {                        foreach (var item in sArray)                        {                            //状态值没有并且车也没有这个数据就是删除了                            string sqlVehicleStateType = "SELECT VehicleStateType_ID FROM EMTinCar  WHERE NO='" + item + "'";                            string VehicleStateType = Common.Conn.SqlHelper.getSqlValue(sqlVehicleStateType);                            if (!string.IsNullOrEmpty(VehicleStateType))                            {                                                          }                            else {                                string sqlID = "SELECT ID FROM EMTinCar  WHERE NO='" + item + "'" ;                                string IDValue = Common.Conn.SqlHelper.getSqlValue(sqlID);                                if (string.IsNullOrEmpty(IDValue))                                {                                    //lblDeteleMess.Visible = true;                                    //lblDeteleMess.Text = item + "号车已被删除";                                                                   }                            }                                                    }                    }                    else {                        foreach (var item in ArrayorderNew)                        {                            //状态值没有并且车也没有这个数据就是删除了                            string sqlVehicleStateType = "SELECT VehicleStateType_ID FROM EMTinCar  WHERE NO='" + item + "'";                            string VehicleStateType = Common.Conn.SqlHelper.getSqlValue(sqlVehicleStateType);                            if (!string.IsNullOrEmpty(VehicleStateType))                            {                            }                            else                            {                                string sqlID = "SELECT ID FROM EMTinCar  WHERE NO='" + item + "'";                                string IDValue = Common.Conn.SqlHelper.getSqlValue(sqlID);                                if (string.IsNullOrEmpty(IDValue))                                {                                    //lblDeteleMess.Visible = true;                                    //lblDeteleMess.Text = item + "号车已被删除";                                }                            }                        }                    }                }            }            if (itemChanged)                ReloadTreeView(newList, tv);        }


    /// <summary>        /// 不用的tv添加节点        /// </summary>        /// <param name="newList"></param>        /// <param name="tv"></param>        private void ReloadTreeView(List<TreeNode> newList, TreeView tv)        {            //个数不同,肯定要刷新            tv.SuspendLayout();            tv.Nodes.Clear();            tv.Nodes.AddRange(newList.ToArray());            tv.ResumeLayout();        }



   //新建车辆有变化就刷新,新建的车有营运跟停驶分为排队跟暂停        private void timerInserTinCar_Tick(object sender, EventArgs e)        {            DataTable dt = YieldTransitEditBus.getTin1(isUpdatOrAdd);            ThrseReloadTreeView(tvQueuing, dt);            DataTable dt2 = YieldTransitEditBus.getTin2(isUpdatOrAdd);            ThrseReloadTreeView(tvDeparture, dt2);            DataTable dt3 = YieldTransitEditBus.getTin3(isUpdatOrAdd);            ThrseReloadTreeView(tvPause, dt3);            btnSratr.Visible = false;        }



0 0
原创粉丝点击