dataTables工作总结
近期在工作中用到了dataTables,现在总结一下在工作中遇到的问题以及解决方法,如有不妥之处希望多多指教,定会改进。
首先这里用的是coloradmin框架,在vs环境下开发。
这里写一个容器用于放值table:
<div class="col-lg-12" id="dataTableDiv"> </div>
这里是table,在运行时将会动态填充到dataTableDiv中,其中dataTbody将存放数据:
<script id="TableTemplate" type="text/x-jquery-tmpl">
<table class="table" id="dataTable">
<thead>
<tr style="height:30px;">
<th width="70">序号</th>
<th width="100">类型</th>
<th width="100">标准编号</th>
<th width="100">等级</th>
<th>来源</th>
<th width="100" class="report-check">报表选项</th>
<th width="130">报警对象</th>
<th width="90">标准值</th>
<th width="90">报警值</th>
<th width="120">深度(m)</th>
<th width="100">对策</th>
<th>备注</th>
</tr>
</thead>
<tbody id="dataTbody"></tbody>
</table>
</script>
这里定义一个行模板,根据数据中对象的字段名来取值,其中checkbox在框架中遇到一些问题,下面会细说:
<script id="TrTemplate" type="text/x-jquery-tmpl">
<tr style="text-align:left;">
<td>${xuhao}</td>
<td>${Type}</td>
<td>${Code}</td>
<td>
{{if Level==3}}
<span style="color:red;">高风险</span>
{{else Level==2}}
<span style="color:orange;">中风险</span>
{{else Level==1}}
<span style="color:yellow;">低风险</span>
{{else}}
<span style="color:green;">安全</span>
{{/if}}
<input type="hidden" value="${ID}" id="${ID}" />
</td>
<td>${RiskSource}</td>
<td style="padding-left:30px;" class="report-check">
<div class="col-md-2 col-lg-2 checkbox checkbox-css">
<input type="checkbox" value="" id="check${ID}" onclick="choose(${ID})" />
<label for="check${ID}"></label>
</div>
</td>
<td>${WarnObject}</td>
<td>${StandardValue}</td>
<td>${WarnValue}</td>
<td>
{{if Depth!=null}}
${Depth/1000}
{{/if}}
</td>
<td></td>
<td>${Note}</td>
</tr>
</script>
这里页面加载时执行这个方法,拿到数据:
function GetPitRiskList(date) {
//页面编辑提交按钮
$(".edit-submit span:first-child").css("color","rgb(204, 204, 204)");
$(".edit-submit").hide();
//获取报表日期
$("#fengxianDate").html(date);
$.ajax({
url: '****************',
type: '***',
dataType: '***',
data: { ************ },
cache: false,
success: function (data, textStatus, xhr) {var i = 1;
var level1 = 0;
var level2 = 0;
var level3 = 0;
for (var o in data) {
data[o].xuhao = i++;
if (data[o].Level == 3) {
level3++;
} else if (data[o].Level == 2) {
level2++;
} else if (data[o].Level == 1) {
level1++;
}
}
DestroyDataTable("#dataTable");
$("#dataTableDiv").empty();
$("#TableTemplate").tmpl().appendTo("#dataTableDiv");
$("#TrTemplate").tmpl(data).appendTo("#dataTbody");
//CreateDataTable("#dataTable");
$("#dataTable").dataTable({
"language": { "url": "/Scripts/Chinese.txt" },
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"aoColumnDefs": [
{
"aTargets": [5],
"bVisible": false
}]
});
$("#Level1Btn").html("低风险" + level1);
$("#Level2Btn").html("中风险" + level2);
$("#Level3Btn").html("高风险" + level3);
allPitRiskList = data;
$("#LevelDiv button").removeClass("btn-border-radius");
$("#ShowAllLevel").addClass("btn-border-radius");
// data: 高风险data
var categoriesArr = new Array();
for (var o in data) {
if ($.inArray(data[o].Type, categoriesArr) == -1) {
categoriesArr.push(data[o].Type);
}
}
var Level1Arr = new Array();
var Level2Arr = new Array();
var Level3Arr = new Array();
for (var i = 0; i < categoriesArr.length; i++) {
Level1Arr.push(0);
Level2Arr.push(0);
Level3Arr.push(0);
}
for (var o in data) {
var xiabiao = $.inArray(data[o].Type, categoriesArr);
if (xiabiao >= 0) {
if (data[o].Level == 3) {
Level3Arr[xiabiao]++;
} else if (data[o].Level == 2) {
Level2Arr[xiabiao]++;
} else if (data[o].Level == 1) {
Level1Arr[xiabiao]++;
}
}
}
drawChart(categoriesArr, Level1Arr, Level2Arr, Level3Arr);
// $("#selListDiv").click();
},
error: function (xhr, textStatus, errorThrown) {
//called when there is an error
}
});
}
好了,接下来要重点说工作中遇到的问题了。
首先是复选框,
默认的复选框在这里是这样的
,而现在需求是这样的
,所以就对复选框 的样式进行调整:
.checkbox.checkbox-css label:before {
width: 10px !important;
height: 10px !important;
border-radius: 0px !important;
border: 1px solid #fff !important;
cursor: pointer;
}
.checkbox.checkbox-css input:checked + label:before {
background: none !important;
border: none !important;
border-color: none !important;
}
然后是使用选择中取消和取值时,由于使用了伪类再加上框架对checkbox已经定义过,所以在使用过程中点击选择样式上达到了效果,却不能在判断:checked=true,正个过程中无论dom取值,还是jquery:checked=true判断,还是在databales中data判断都始终时false,
当点击时方法中传一个id,然后循环table,当id相等时,将input标签的value=""替换成'value="" checked="checked"',当然取消选中就是将 'value="" checked="checked"'替换成value="",由于我们是多模块取值,所以我定义了一个全局变量,在选中的同时添加或删除值,
这里只说一下删除值,dataList.splice(i,1);意思是删除下标为i的一项。上代码:
function choose(id){
$("#dataTable").DataTable().rows().data().each(function (data, index, rows) {//循环tabale(不是一页的数据,而是全部数据)
var RiskID=$(data[3])[2].value;
if(RiskID==id){
if($(data[5]).find("input")[0].checked==true){
data[5] = data[5].replace('checked="checked"','');
$("#dataTable").DataTable().row(index).data(data);
for (var i=0;i<DataList.length;i++){
if (DataList[i].RiskID==RiskID){
DataList.splice(i,1);
}
}
}else{
data[5] = data[5].replace('value=""', 'value="" checked="checked"');
$("#dataTable").DataTable().row(index).data(data);//将行取出改变后再赋进去
}
if($(data[5]).find("input")[0].checked==true){//如果是选中而不是取消就拿值
var obj={
"RiskID":$(data[3])[2].value,
"ModleType":data[1],
"StandardCode":data[2],
"RiskLevel":$(data[3])[0].innerText,
"RiskSource":data[4],
"WarnObject":data[6],
"StandardValue":data[7],
"WarnValue":data[8],
"DigDepthValue":data[9],
};
DataList.push(obj);
}
}
});
}
最后一个就是databales列隐藏显示的问题,隐藏有两种方式:
一种是初始化时候:
$("#dataTable").dataTable({
"language": { "url": "/Scripts/Chinese.txt" },
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"aoColumnDefs": [
{
"aTargets": [5],//目标列
"bVisible": false//是否隐藏,false隐藏
}]
});
另一种就是:
$("#dataTable").dataTable().fnSetColumnVis(5, false,false );
其中5代表目标列,第一个false是隐藏,第二个是不重绘表格,如果为true则会出现重复数据覆盖数据问题,具体为什么会这样未知,
到此在工作中对datatables使用过程中遇到的问题就没了,以后在使用过程中遇到会再次进行补充。
dataTables工作总结的更多相关文章
- Jquery.Datatables 服务器处理(Server-side processing)
看了看介绍 http://datatables.club/manual/server-side.html 没有经过处理的分页,先显示出来看看效果,就这样写(存储过程自己写) cshtml " ...
- Jquery.Datatables 基本创建方法
基本创建 <!--定义操作列按钮模板--> <script id="tpl" type="text/x-handlebars-template" ...
- jquery 的datatables插件问题
翻页后js失效: 重绘事件-当表格重绘完成后 重新绑定事件: draw.dt $('#example').dataTable(); $('#example').on( 'draw.dt', fun ...
- Jquery DataTables warning : Requested unknown from the data source for row 0
昨天在做 Jquery DataTables 的时候,遇到的一个问题,我使用MVC,在tables上加入了一个actionlink的href.但是在运行起来的时候,报错: DataTables war ...
- datatables 参数详解(转)
//@translator codepiano //@blog codepiano //@email codepiano.li@gmail.com //尝试着翻译了一下,难免有错误的地方,欢迎发邮件告 ...
- jQuery DataTables 插件使用笔记
初始化 在页面中 <!DOCTYPE html> <html> <head> <link rel="stylesheet" type=&q ...
- JQuery DataTables Editor---页面内容修改&&数据库信息修改 (2)
接上篇博文,详细说一下js代码以及JQuery DataTables Editor---页面内容修改&&数据库信息修改遇到的问题和解决办法. 1.关于dialog 初始化: $(&qu ...
- JQuery DataTables Editor---只修改页面内容
近来在工作中需要对JQuery DataTables进行增,删,改的操作,在网上找了一些资料,感觉比较的好的就是(http://editor.datatables.net/)文章中所展示的操作方法(如 ...
- datatables表格
datatables表格 并不是所有的后台开发都有美工和前端工程师来配合做页面,为了显示数据并有一定的美感,jQuery的DataTables插件对于像我这样的前端菜鸟来说真是雪中送炭,当然对于专业的 ...
随机推荐
- centos7安装ftp
1.服务器初始化检查 检查selinux,firewall,iptables是否开启 1.查看selinux的运行状态 [root@zeq ~] getenforce Disabled 我的现在是关闭 ...
- 转:30分钟学会如何使用Shiro
引自:http://www.cnblogs.com/learnhow/p/5694876.html 本篇内容大多总结自张开涛的<跟我学Shiro>原文地址:http://jinniansh ...
- mvc 页面 去掉转义字符
mvc 页面 去掉转义字符 mvc 后台返回json数据,用ViewBag 传回前台页面,但是传到前台页面的时候,带有转义字符.一直想去掉这个转义字符,苦恼了好久. 解决方案: mvc 页面有个这 ...
- 详解PreparedStatement
详解PreparedStatement /** * PrepareStatement 测试插入数据库 */ /** * 如果使用Statement,那么就必须在SQL语句中,实际地去嵌入值,比如之前的 ...
- webpack4的react打包错误
因为之前一直用的是脚手架创建项目,第一次自己学习创建webpack打包.loader我是复制别人的. module: { loaders: [ { test: /\.js?$/, exclude: / ...
- hadoop jobhistory访问界面长时间打不开
1.浏览器无法直接通过url访问 可能原因 :主机名未配置,因此无法识别,在 c:\windows\system32\drivers\etc 目录添加主机名和对应ip hostname1[主机名 ] ...
- Drill-On-YARN
1. Drill-On-YARN介绍 功能 启动 停止 扩容 缩容 failover 启动流程 下载drill的社区包,进行必要的配置,执行drill-on-yarn.sh start命令,启动dri ...
- 【Android】导航栏(加图片icon)和不同页面的实现(viewpager+tablayout)
先上图,然后说大致步骤,最后再说细节 图片效果:依序点击导航栏左一.左二.中.右二.右一,最后直接滑动页面(不依靠导航栏切换) 大致步骤如下(文末会有完整代码) [1]创建一个类,我这里取名TabBa ...
- vim 智能提示插件 YouCompleteMe安装
按照网上的教程安装该软件,没有一篇是成功的(也有可能是没找对).自己从网上东拼西凑的,终于让自己的vim智能识别了. 1. 升级 vim: (ubuntu) sudo add-apt-reposito ...
- SpringBoot入门(四)——自动配置
本文来自网易云社区 SpringBoot之所以能够快速构建项目,得益于它的2个新特性,一个是起步依赖前面已经介绍过,另外一个则是自动配置.起步依赖用于降低项目依赖的复杂度,自动配置负责减少人工配置的工 ...