好记性不如烂笔头。

treetable 官网:http://ludo.cubicphuse.nl/jquery-treetable/#api

今天要做一个关于table的树节点展示,还有编辑,删除功能,找了一堆的代码,终于完成了。先奉上完成后图片:

webservice中配置:

因为 有查询节点功能,所以sql语句中要保证当查询子节点时可以获取到父节点中的数据:

sql 语句:

  sql.Append("select * from(");

                 sql.Append(@"SELECT
row_number () OVER ( ORDER BY
CAST
(a.SHOWINDEX AS NUMERIC(18, 0)) ASC
) AS rn,
a.LAID,
a.LABEL,
b.LABEL AS parent,
a.BELONINGLABLE,
a.SHOWINDEX
FROM
TB_LABEL a
LEFT JOIN TB_LABEL b ON b.LAID = a.BELONINGLABLE
WHERE
(
a.LABEL LIKE @bqm
OR (
SELECT
COUNT (1)
FROM
TB_LABEL c
WHERE
c.BELONINGLABLE = a.LAID
AND c.LABEL LIKE @bqm
) > 0
)
");
sql.Append(") t where rn between @rn1 and @rn2");

将获取的值(list型)排序排成  父节点在前,其子节点在后的顺序,偏于前台展示:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace Web
{
public static class treetable
{ public static List<Web.WebService.index.label> resultNodes = new List<Web.WebService.index.label>();//树形结构排序之后list内容
public static List<Web.WebService.index.label> nodes; //传入list参数 public static List<Web.WebService.index.label> TreeLists(List<Web.WebService.index.label> WYGLTableModelList)
{
resultNodes.Clear(); ///清空 上一次 的 返回数组
nodes = WYGLTableModelList;
for (int i = ; i < nodes.Count; i++)
{
String id = nodes[i].UNITID;
if (nodes[i].UNITNAME == "")
{//通过循环一级节点 就可以通过递归获取二级以下节点
resultNodes.Add(nodes[i]);//添加一级节点
build(nodes[i]);//递归获取二级、三级、。。。节点
}
} return resultNodes;
} /**
* 递归循环子节点
*
* @param node 当前节点
*/
private static void build(Web.WebService.index.label node)
{
List<Web.WebService.index.label> children = getChildren(node);
if (children.Count > )
{//如果存在子节点
foreach (Web.WebService.index.label child in children)
{//将子节点遍历加入返回值中
resultNodes.Add(child);
build(child);
}
}
}
/**
* @param node
* @return 返回
*/
private static List<Web.WebService.index.label> getChildren(Web.WebService.index.label node)
{
List<Web.WebService.index.label> children = new List<Web.WebService.index.label>();
String id = node.UNITID;
foreach (Web.WebService.index.label child in nodes)
{
if (id == (child.UNITNAME))
{//如果id等于父id
children.Add(child);//将该节点加入循环列表中
}
}
return children;
} }
}

将组织好的数据发送到前端js 进行处理:

 $.ajax({

            url: WebService + "/Query_biaoqian_data",
type: "post", dataType: "json",
data: '{bqm:"'+bqm +'"}', contentType: 'application/json; charset=utf-8',
success: function (data) {
var bok = data.d;
var obj = JSON.parse(bok);
dataLength = obj.rows.length;
if (dataLength > 0) {
var sss = obj.rows;
var html = "<tbody><tr><td style='width:40%'>名称</td><td style='width:30%'>排序</td><td>操作</td></tr>";
for (var i = 0; i < dataLength; i++) { var a = sss[i].UNITID;
var b = sss[i].UNITNAME;
var content = sss[i].BELONGDPTID;
if (b) {
html += '<tr data-tt-id="' + a + '" data-tt-parent-id="' + b + '"><td style="width:40%">' + content + '</td><td style="width:30%">' + sss[i].SHOWINDEX + '</td><td><a class="btn" data-toggle="modal" data-target="#add_gl" data-whatever="@biaoqiangl_xg" onclick="updateBind(\'' + a + ';' + sss[i].BELONGDPTID + '\')"><img src="./images/icon-edit.png" alt="修改"></a><a class="btn" onclick="deletes(\'' + a + '\')"><img src="./images/icon-gn_17.png" alt="删除"></a></td></tr>';
}
else {
html += '<tr data-tt-id="' + a + '"><td style="width:40%">' + content + '</td><td style="width:30%";>' + sss[i].SHOWINDEX + '</td><td><a class="btn" data-toggle="modal" data-target="#add_gl" data-whatever="@biaoqiangl_xg" onclick="updateBind(\'' + a + ';' + sss[i].BELONGDPTID + '\')"><img src="./images/icon-edit.png" alt="修改"></a><a class="btn" onclick="deletes(\'' + a + '\')"><img src="./images/icon-gn_17.png" alt="删除"></a></td></tr>';
}
}
html += "</tbody>";
$('#tgProjectCustomer').append(html); loadResource(); ////重新 加载 页面引用 的 js文件 }
loadResource()开始将 table 转化成 tree—table;
var mouse;
function loadResource() {
$("link[href='js/treetable/jquery.treetable.theme.default.css']").remove(); ////将页面 引入 的3个js 文件 删除掉,在下面重新 加载
$("link[href='js/treetable/jquery.treetable.css']").remove();
$("script[src='js/treetable/jquery.treetable.js']").remove();
mouse = 0;
///每次先做出界面 然后动态加载 3个js 来渲染 table
loadjscssfile("js/treetable/jquery.treetable.css", "css", dataLength);
loadjscssfile("js/treetable/jquery.treetable.theme.default.css", "css", dataLength);
loadjscssfile("js/treetable/jquery.treetable.js", "js", dataLength); } function loadjscssfile(filename, filetype, dataLength) { ///加载 3个 文件 if (filetype == "js") {
var fileref = document.createElement('script');
fileref.setAttribute("type", "text/javascript");
fileref.setAttribute("src", filename);
mouse++;
} else if (filetype == "css") {
var fileref = document.createElement('link');
fileref.setAttribute("rel", "stylesheet");
fileref.setAttribute("type", "text/css");
fileref.setAttribute("href", filename);
mouse++;
} if (typeof fileref != "undefined") {
document.getElementsByTagName("head")[0].appendChild(fileref); ///将 添加的 js文件 加载到 html文件中<script src=""></script> if (mouse == 3) { ////当3个 js 动态文件 执行成功后 调用 加载的js 文件里的方法
$("#tgProjectCustomer").treetable('destroy'); ///当第一次 执行成功后, 再次执行 要清除 上一次的 痕迹
$("#tgProjectCustomer").treetable({ expandable: true }); //执行 渲染 函数 ,把他 渲染成 树形 table
}
}
}
  $("#tgProjectCustomer").treetable('destroy'); 因为我们有查询 会多次 渲染,要把 上次 的 清除掉,否则不会生成treetable 表
到此,大功告成。
参考博客:http://blog.csdn.net/song_de/article/details/38224549 动态tree table jquery插件使用
http://blog.csdn.net/gaoqiao1988/article/details/9121961 动态加载、移除、替换js/css文件
等(忘了<^-^>)
 

treetable--.net webform中树形table表管理的应用的更多相关文章

  1. MySQL中 optimize table '表名'的作用

    语法: optimize table '表名' 一,原始数据 1,数据量 2,存放在硬盘中的表文件大小 3,查看一下索引信息 索引信息中的列的信息说明. Table :表的名称.Non_unique: ...

  2. mysql中树形结构表的操作

    一种是:邻接表模型(局限性:对于层次结构中的每个级别,您需要一个自联接,并且随着连接的复杂性增加,每个级别的性能自然会降低.在纯SQL中使用邻接列表模型充其量是困难的.在能够看到类别的完整路径之前,我 ...

  3. jQuery获取table表中的td标签

    首先我来介绍一下我遇到的问题 1.当有一个table表包含了<tr>标签,<td>标签,大致可以认为是这样的: <tr> <td> @scene.ID ...

  4. Openvswitch原理与代码分析(5): 内核中的流表flow table操作

      当一个数据包到达网卡的时候,首先要经过内核Openvswitch.ko,流表Flow Table在内核中有一份,通过key查找内核中的flow table,即可以得到action,然后执行acti ...

  5. MySQL 中 You can't specify target table '表名' for update in FROM clause错误解决办法

    在MySQL中,写SQL语句的时候 ,可能会遇到You can't specify target table '表名' for update in FROM clause这样的错误,它的意思是说,不能 ...

  6. 从Table 表中取出第 m 条到第 n 条的记录

    * FROM Table id FROM Table )) --从TABLE表中取出第m到n条记录 (Exists版本) * FROM TABLE AS a WHERE Not Exists ( * ...

  7. MySQL中You can't specify target table '表名'('sn_app_label') for update in FROM clause错误解决办法

    在有些时候有级联关系的数据放在了同一张表中,在写sql语句的时候可能会遇到这样的场景:我要插入两条数据,第一条是父节点,第二条是子节点,关联关系是父节点的自增长id:在写这样的sql语句时有可能就会出 ...

  8. 在 easyui中获取form表单中所有提交的数据 拼接到table列表中

    form表单===== <!-- 并用药品填写信息弹框 --> <div id="usingProdctMsgDiv" style="display: ...

  9. iview table表中使用render函数props传值出现问题

    使用iview中的table表格时避免不了使用render函数渲染自定义内容,或者渲染组件.但是在正常使用时出现了props传值无法识别, 按照官网介绍使用props如下: render: (h, p ...

随机推荐

  1. AngularJs学习笔记--Modules

    原版地址:http://code.angularjs.org/1.0.2/docs/guide/module 一.什么是Module? 很多应用都有一个用于初始化.加载(wires是这个意思吗?)和启 ...

  2. Linux 查看所有登录用户的操作历史

    在linux系统的环境下,不管是root用户还是其它的用户只有登陆系统后用进入操作我们都可以通过命令history来查看历史记录,可是假如一台服务器多人登陆,一天因为某人误操作了删除了重要的数据.这时 ...

  3. BZOJ4011:[HNOI2015]落忆枫音(DP,拓扑排序)

    Description 「恒逸,你相信灵魂的存在吗?」 郭恒逸和姚枫茜漫步在枫音乡的街道上.望着漫天飞舞的红枫,枫茜突然问出这样一个问题.  「相信吧.不然我们是什么,一团肉吗?要不是有灵魂……我们也 ...

  4. thinkPHP输出sql语句(3.2和5.0通用)

    //5.0$qwe = db::table('think_user')->where('id',1)->fetchsql()->column('name'); dump($qwe); ...

  5. HDU 6395 Sequence 【矩阵快速幂 && 暴力】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6395 Sequence Time Limit: 4000/2000 MS (Java/Others)   ...

  6. 二十二、详述 IntelliJ IDEA 中恢复代码的方法

    在咱们正常开发项目的时候,难免遇到在开发过程中由于某种原因,想要将代码恢复到前一版本的情景.特别是在咱们删除了某些代码,想要恢复之前删除的代码的时候,了解这个在 IntelliJ IDEA 中恢复代码 ...

  7. 智能指针 与 oc中的指针

     智能指针 与 oc中的指针 智能指针的原理及实现 当类中有指针成员时,一般有两种方式来管理指针成员:一是采用值型的方式管理,每个类对象都保留一份指针指向的对象的拷贝:另一种更优雅的方式是使用智能指针 ...

  8. STM32F103 ucLinux开发之二(内核启动汇编代码分析)

    start_kernel之前的汇编代码分析 Boot中执行下面两句话之后,进入uclinux内核. theKernel = (void (*)(int, int, unsigned int))((ui ...

  9. 05 oracle中lock和latch的用途

    oracle中lock和latch的用途   本文向各位阐述Oracle的Latch机制,Latch,用金山词霸翻译是门插栓,闭锁,专业术语叫锁存器,我开始接触时就不大明白为什么不写Lock,不都是锁 ...

  10. Vue和element-ui结合的简单使用

    前提 vue在前端技术中使用越来越多,也成为了主流框架,花点时间稍微了解下vue-cli.vue-router结合element-ui的使用.本人使用的是windows系统,后续介绍以windows7 ...