DataTabls使用案例

最近项目中绘制表格大量用到了DataTabls绘制表格,感觉特别好用。有几个很常见的方法记录一下。

1、render():

(1)作用:把请求过来的数据做进一步的处理, 方法返回的数据被用作Datatables最终使用的数据。

(2)参数:render( data, type, row, meta )
data:当前cell的值;
type:数据类型 - 有这些值:filter、display、type、sort
row:整个row的数据

(3)应用:
把数据源的数据转换成超链接:

$('#example').dataTable( {
  "columnDefs": [ {
    "targets": 0,
    "data": "download_link",
    "render": function ( data, type, full, meta ) {
      return '<a href="'+data+'">Download</a>';
    }
  } ]
} );

2、createdcell

(1)单元格创建回调以允许操作DOM:从ajax数据源或dom数据源读取数据创建单元格执行的回调函数。补充操作单元格的dom元素。

(2)参数:function createdCell( cell, cellData, rowData, rowIndex, colIndex )

(3)应用:(在单元格前边添加按钮)

$("#example").dataTable({
	"columns": [
		{"data": "work",
		"createdCell": function(td, cellDate, rowData, row, col){
				$(td).prepand('<button type="button">前加</button>');  // 在单元格前添加按钮
				$(td).append('<button type="button">后加</button>');  // 在单元格后添加按钮
				$(td).css({"position": "relative"});  // 定位
			}
		}
	]
})

3、columns和columnDefs

(1)columns:设置列的初始化属性。使用 columns来定义列,那么你的th有多少,就要定义多个个(如果你不指定任何选项可以为null)

禁止第一列参与过滤(此表格有5列,其他列由于不指定选项,则为null) 
$('#example').dataTable( {
  "columns": [
    { "searchable": false },
    null,
    null,
    null,
    null
  ]
} );

(2)columnDefs:设置列定义初始化属性
和 columnsOption 参数很像,这个参数允许你给指定列设置选项,应用到一个或这多个列。而不像 columnsOption 需要每列都要定义

这个参数是一个列定义对象数组,通过使用 columnDefs.targetsDT 选项,告诉Datatables是定义的是那一列,他可以是下列情况:

0或者正整数-列从左到右是从0开始
一个负数-列从右到左的索引(-1代表最后一列)
一个字符串-将字符串和类名匹配列
字符串"_all"-所有列

另外, targets可以同时指定多列,接受一个数组(比如 targets: [ -1, -2 ] )

// 应用场景一:在鼠标点击每一行时跳转到改行详情页
1、先给每一行添加class属性;
$("#example").dataTable({
	"columnDefs": [
		{
		"targets": "_all",  // 受影响咧
		className: "detail-control',  // 每列增加class属性
		"render": $.fn.dataTable.render.text()  // ?这行是干什么的?请指导的大神指导下
		}
	]
})
2、绑定点击事件
$("#example tbody").on("click", "td.detail-control", function(){
	var data = $("#example").row(this).data();  // 获取选中行的数据
	var data = $("example").row($(this).parents("tr")).data();  同上
	window.location.href="url=" + data.id;
})

// 设置列为编辑或删除图标
"columnDefs": [
    {
        "targets": -1,
        "data": null,
        "defaultContent": '<i class="fa fa-edit" style="font-size: 20px;position: absolate; margin-right: 20%; cursor: pointer" id="edit"></i>&nbsp;<i class="fa fa-times" style="font-size: 20px; cursor: pointer" id="delete"></i>',
        "render": $.fn.dataTable.render.text()
    }

],

4、表格更改后刷新表格(表格重载数据,不刷新页面)

 // 表格再更改之后刷新表格,不刷新页面
$('#mytable').DataTable().ajax.url('/hello_word').load();

// 对加载到的数据进一步处理
$("#example").DataTable().ajax.url(url).load(function (data) {
console.log(data.data.length);
    if (data.data.length == 0) {
        $('#pd1').hide();
    } else {
        $('#pd1').show();
    }
});

5、下拉选择搜索框

<div class="col-md-3">
    <form role="form">
         <div class="form-group">
             <label class="col-md-5  col-sm-5 control-label"
                    style="margin-left: 2%;z-index: 999990;padding: 0px">搜所课程:</label>
             <div class="col-md-7"
                  style="padding-left: 0px;margin-left: -6%;margin-top: -1%;padding-left: 0px;padding-right: 0px;">
                 <select class="form-control " id="course_select">
                     <option value="全部">全部</option>
                     <option value="语文">语文</option>
                     <option value="数学>数学</option>
                     <option value="英语">英语</option>
                 </select>
             </div>
         </div>
     </form>
 </div>

<script type="text/javascript">
$("#course_select").change(function(){
	var url = "/get_sourse?course=" + $("#course_select").val();
	// 重新加载数据
	$("#mytable").DataTable().ajax.url(url).load(function (data) {
        console.log(data.data.length);
         if (data.data.length == 0) {
             $('#pd1').hide();
         } else {
             $('#pd1').show();
         }
     });
})
</script>

6、删除选中行

//删掉选中行,不重新加载数据
table.row($(this).parents('tr')).remove().draw(false);  

更多配置说明和使用案例请参考:
Jquery DataTable基本使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值