解决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
- 解决treeview绑定节点多少频繁刷新可以使用有变化时才绑定
- treeview递归绑定节点
- 使用字符串绑定TreeView
- 关于 treeview 绑定大量节点的问题
- 从数据库读取节点,动态绑定TreeView
- C#TreeView数据绑定+拖动节点
- treeview 绑定 datatable 或 dataset 添加节点
- C#Window VS2015,Treeview动态绑定树节点绑定sql
- 使用TreeView绑定SQL数据源
- 动态绑定TreeView(使用递归)
- treeview绑定
- treeview绑定
- Treeview绑定
- TreeView绑定
- 绑定TreeView
- mvc3 treeview使用telerik控件js绑定
- Treeview 绑定 一次性读取所有子节点(无限制)
- asp.net treeview数据库绑定 (节点添加 删除 修改)
- iOS开发—本地化
- 一招解决!!!解决ECSHOP中transport.js和jquery的冲突
- form 表单提交, html中ID, name 的区别
- gradlew: Permission Denied
- Php防跨站分析
- 解决treeview绑定节点多少频繁刷新可以使用有变化时才绑定
- poj1611The Suspects
- 【STL C++】简单实现vector
- 如何获取到Android控件的高度
- iOS 单例模式
- c++函数模板(function template)
- 解决Volley乱码问题
- 利用C的BMP图像的读取、保存及旋转的实现
- private 和final区别 代码实现