当前位置:
首页 > Python基础教程 >
-
C#教程之Web网页树形列表中实现选中父节点则子节
需要实现的功能:选中父节点对应子节点全选;不选中父节点,对应子节点也不选中
如下图所示,选中车队,对应车队中车辆也全部选中,以实现车队中所有车辆在地图上的显示。
选中cqupt1,则对应所有成员car1,car2自动选中,地图上显示车队中的所有车辆位置信息
解决办法:
车队对应的id为team_id,车辆对应的id为veh_id,在每个车队中,所有车辆对应同一个team_id
1、首先在TeamTree.aspx.cs文件中
把team_id从父节点函数中传递到子节点函数中,
再给该车队每个成员定义一个共同的标签名称team_id,这样car1/car2/car3三个车有个共同的标签team_id :
sb_TreeNode.Append("<div class='" + strclass + "'><input id='" + entity.team_id + "' type='checkbox' /><span>" + entity.team_name + "</span></div>");
选中team_id,对应的member_id都选中,并传递member_id,而不传递team_id。而上面的程序直接把id传出
对应代码如下:
1 /// <summary> 2 /// 创建子节点 3 /// </summary> 4 /// <param name="list">list</param> 5 /// <returns></returns> 6 public string GetTreeNode(IList list) 7 { 8 Info_Veh_Team info_veh_team = new Info_Veh_Team(); 9 StringBuilder sb_TreeNode = new StringBuilder(); 10 List<Info_Veh_Team> itemNode = IListHelper.IListToList<Info_Veh_Team>(list); 11 12 int index1 = 0; 13 string strclass = ""; 14 if (itemNode.Count > 0) 15 { 16 sb_TreeNode.Append("<ul>"); 17 foreach (Info_Veh_Team entity in itemNode) 18 { 19 if (index1 == 0) 20 strclass = "collapsableselected"; 21 else 22 strclass = ""; 23 sb_TreeNode.Append("<li>"); 24 sb_TreeNode.Append("<div class='" + strclass + "'><input id='" + entity.team_id + "' type='checkbox' id1='" + index1 + "' /><span>" + entity.team_name + "</span></div>"); 25 26 info_veh_team = info_veh_teamibll.GetEntity(entity.team_id); 27 StringBuilder where = new StringBuilder(); 28 where.Append("and team_id='" + info_veh_team.team_id + "'"); 29 IList nextlist = info_team_memberibll.GetListWhere(where, null); 30 sb_TreeNode.Append(GetTreeNodeNext(nextlist, index1)); 31 sb_TreeNode.Append("</li>"); 32 index1++; 33 } 34 sb_TreeNode.Append("</ul>"); 35 } 36 return sb_TreeNode.ToString(); 37 } 38 /// <summary> 39 /// 创建子节点 40 /// </summary> 41 /// <param name="list">list</param> 42 /// <returns></returns> 43 public string GetTreeNodeNext(IList list, int index1) 44 { 45 StringBuilder sb_TreeNode = new StringBuilder(); 46 List<Info_Team_Member> itemNode = IListHelper.IListToList<Info_Team_Member>(list); 47 int index = 0; 48 string strclass = ""; 49 if (itemNode.Count > 0) 50 { 51 sb_TreeNode.Append("<ul>"); 52 foreach (Info_Team_Member entity in itemNode) 53 { 54 if (index == 0) 55 strclass = "collapsableselected"; 56 else 57 strclass = ""; 58 sb_TreeNode.Append("<li>"); 59 sb_TreeNode.Append("<div class='" + strclass + "'><input id='" + entity.member_id + "' type='checkbox' name='" + index1 + "' id2='" + index1 + "' id3='" + entity.veh_lpn + "'/><span>" + entity.veh_lpn + "</span></div>"); 60 sb_TreeNode.Append("</li>"); 61 index++; 62 } 63 sb_TreeNode.Append("</ul>"); 64 } 65 return sb_TreeNode.ToString(); 66 }
2、具体的复选框选中在js里面去实现,也就是TeamTree.aspx中去实现(选中父则子全选中)
在TeamTree.aspx中,先是把复选框选中的所有元素保存到数组中,界面点击传出的选中的结果,对应实现应该勾选的各结果
$('.strTree li div input:checkbox').click(function () {//问题:如何实现选中车队,对应成员全部选中,并传对应所有成员的member_id,而不是传team_id team_id = document.getElementsByName($(this).attr('id1')); //通过name 获取name='team_id'的子元素 ($(this).attr('id'))为被选中的车队名 team = document.getElementById($(this).attr('id')); //通过id获取 获取的是被勾选的车队或者车辆的id if (team.checked) { for (i = 0; i < team_id.length; i++) { team_id[i].checked = true; } } else { for (i = 0; i < team_id.length; i++) { team_id[i].checked = false; } } //alert(team_id.length); var indexs = []; var vehIds = []; $(".strTree li div input:checkbox:checked").each(function (i) { //由于复选框选中多个,所以循环输出 v = document.getElementsByName($(this).attr('id1')); //alert("v的值" + v.length); if (v.length == 0) { //vehIds[i] = $(this).attr('id2') + "|" + $(this).attr('id3'); indexs[i] = $(this).attr('id2'); vehIds[i] = $(this).attr('id3'); } //vehIds[i] = $(this).attr('id'); //attr() 方法设置或返回被选元素的属性值 }); for (var i = 0; i < indexs.length; i++) { //清除vehIds[]中的所有空字符串 if (indexs[i] == '' || indexs[i] == null || typeof (indexs[i]) == undefined) { indexs.splice(i, 1); i = i - 1; } } for (var i = 0; i < vehIds.length; i++) { //清除vehIds[]中的所有空字符串 if (vehIds[i] == '' || vehIds[i] == null || typeof (vehIds[i]) == undefined) { vehIds.splice(i, 1); i = i - 1; } } self.vehIds = vehIds; self.indexs = indexs; var path = 'TeamMap.aspx'; window.parent.frames['target_right'].location = path; Loading(true); });
调试结果:
参考实例:
http://blog.csdn.net/kissing7/article/details/8920566
参考网址:
http://www.codeweblog.com/jquery%e6%93%8d%e4%bd%9c%e4%b8%89%e5%a4%a7%e6%8e%a7%e4%bb%b6-%e4%b8%8b%e6%8b%89-%e5%8d%95%e9%80%89-%e5%a4%8d%e9%80%89-%e7%9a%84%e6%96%b9%e6%b3%95/
http://www.codeweblog.com/jquery%e6%93%8d%e4%bd%9c%e5%a4%8d%e9%80%89%e6%a1%86-checkbox-%e7%9a%8412%e4%b8%aa%e5%b0%8f%e6%8a%80%e5%b7%a7%e6%80%bb%e7%bb%93/
http://www.cnblogs.com/Chen-XiaoJun/p/5753911.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式