datatables 使用心得

由于需要用到展开显示详情这个功能,在尝试了div的层显示和隐藏的各种失败后,遇上了datatables,下面就讲讲我此次使用此控件的些许心得吧,也为自己做做技术总结啥的

首先上上效果图:


html代码:

<div id="table" class="mt10">
            <div class="box span10 oh">
                <table id ="example" width="100%" border="0" cellpadding="0" cellspacing="0" class="list_table" >
                    <thead>
                    <tr>
                        <th width="20" nowrap="nowrap"><input type="checkbox"  οnclick="selectedAll()" id="ch1">全选</th>
                        <th width="30" nowrap="nowrap">部品名称</th>
                        <th width="30" nowrap="nowrap">部品制番</th>
                        <th width="30" nowrap="nowrap">部品管理号</th>
                        <th width="30" nowrap="nowrap">修理者</th>
                        <th width="30" nowrap="nowrap">受付日期</th>
                        <th width="30" nowrap="nowrap">处置结果</th>
                        <th width="30" nowrap="nowrap">操作</th>
                        <th width="30" nowrap="nowrap">显示部品详情</th>
                    </tr>
                    </thead> 
                    <tfoot></tfoot>
                </table>  
            </div>		
        </div>	
其中thead部分就是表头 也就是第一行中带有稍许阴影显示的部分内容,这个可以由自己随意编写,相信大家这个不需要我赘述了,(*^__^*) 嘻嘻……

js代码:

        $(document).ready(function() {
            var pro_name = document.getElementById('pro_name').value;
            var pro_no = document.getElementById('pro_no').value;
            var manager_no = document.getElementById('manager_no').value;
            var repair_man = document.getElementById('repair_man').value;
            var accept_time = document.getElementById('accept_time').value;
            var disposal_result = document.getElementById('disposal_result').value;
            var dt = $('#example').DataTable( {
                "bPaginate": true,    <span style="white-space:pre">	</span>//是否显示分页功能
		"serverSide": false,    <span style="font-family: Arial, Helvetica, sans-serif;">//<span style="font-family: Consolas, 'Courier New', Courier, mono, serif; line-height: 18px;">指定从服务器端获取数据,如果将此参数设置为true时,分页将不会显示</span></span>
                "bSort": false,   //排序功能
                "iDisplayLength": 10,//每页显示的数据行数
                "sPaginationType": "full_numbers",//分页的格式,其中有两种格式,一种是只显示上下页的,含有一种就是我这样的显示数字和上下页的
                "ajax": {
                        "url": "__URL__/GetAcceptanceProductInfo",
                        "type": "POST",
                        "data":{"pro_name":pro_name,"pro_no":pro_no,"manager_no":manager_no,"repair_man":repair_man,"accept_time":accept_time,"disposal_re<span style="white-space:pre">		</span>sult":disposal_result},
                    },//ajax请求数据的路径和往后台传递的参数
		"columns": [
                        {"sWidth": "10px", "data": "id","mRender": function(data, type, full) {
                                return '<input type="checkbox"  id = "ids" name="ids" value="' + data + '" >';
                            }
                        },//此处显示的是表格数据中第一列的值,依次往后推,下面也就是第二列,第三列。。。的值
			{ "data": "pro_name" },
			{ "data": "pro_no" },
			{ "data": "manager_no" },
                        { "data": "repair_man" },
                        { "data": "accept_time" },
                        { "data": "disposal_result"},
                        {"sWidth": "30px", "data": "id", "mRender": function(data, type, full) {
                                return '<a href ="__URL__/DeleteAcceptanceProductData/id/'+data+'/flag/DeleteAcceptanceProductInfo"  class="ext_btn" οnclick="return delSingle();"><span class="add"></span>删除</a>';
                            }
                        },
                        {
                            "className":      'details-control',
                            "orderable":      false,
                            "data":           null,
                            "defaultContent": '',                            
			},
            ],  //此处为表格数据结束的位置
            "oLanguage": {                          //汉化   
                "sLengthMenu": "每页显示 _MENU_ 条记录",   
                "sZeroRecords": "没有检索到数据",   
                "sInfo": "总共_PAGES_ 页,显示第_START_ 到第 _END_ ,总共有 _TOTAL_ 条记录",   
                "sInfoEmtpy": "没有数据",   
                "sProcessing": "正在加载数据...",   
                "oPaginate": {   
                    "sFirst": "",   
                    "sPrevious": "上一页",   
                    "sNext": "下一页",   
                    "sLast": ""  
                }   
            }   //此处为分页的格式 
	} ); 
	
	// 点击显示部品详情中的+号图标,显示详情的内容
	var detailRows = [];
	$('#example tbody').on( 'click', 'tr td.details-control', function () {
            var tr = $(this).closest('tr');
            var row = dt.row( tr );
            var idx = $.inArray( tr.attr('id'), detailRows );

            if ( row.child.isShown() ) {
                    tr.removeClass( 'details' );
                    row.child.hide();

                    // Remove from the 'open' array
                    detailRows.splice( idx, 1 );
            }
            else {
                    tr.addClass( 'details' );
                    row.child( format( row.data() ) ).show();

                    // Add to the 'open' array
                    if ( idx === -1 ) {
                            detailRows.push( tr.attr('id') );
                    }
            }
	} );

	// On each draw, loop over the `detailRows` array and show any child rows
	dt.on( 'draw', function () {
            $.each( detailRows, function ( i, id ) {
                $('#'+id+' td.details-control').trigger( 'click' );
            } );
	} );
} );
<pre name="code" class="javascript">function format( d ) {
	// `d` is the original data object for the row
	return '<fieldset class="fieldset123"><legend class="legend123">外观确认</legend><div id="data2"><table><tr>'+                    
                    '<td nowrap="nowrap" style="text-align:right">使用情况:</td>'+
                    '<td style="text-align:left">'+d.use_status+'</td>'+
                    '<td nowrap="nowrap" style="text-align:right">外观变形:</td>'+
                    '<td style="text-align:left">'+d.surface_status+'</td>'+
                    '<td nowrap="nowrap" style="text-align:right">缺少部分:</td>'+
                    '<td style="text-align:left">'+d.missingpart_status+'</td>'+
                    '<td nowrap="nowrap" style="text-align:right">包装是否完整:</td>'+
                    '<td style="text-align:left">'+d.pack_status+'</td>'+
                '</tr></table></div></fieldset>'+         	
    }<span style="font-family: Arial, Helvetica, sans-serif;">//此处为需要展示的数据的式样和内容,可以任意添加你需要的内容,拼接各种的字符串,只有你想不到,没有你做不到,嘿嘿</span>

 

接下来便是后台传参数的代码了,我用的是thinkPHP框架的,然后就直接是PHP代码啦
<pre name="code" class="php">public function GetAcceptanceProductInfo(){ 
    $acceptanceInfo = D('acceptance');
    $condition = array();
    $flag = I('get.flag'); 
    $iDisplayLength = I('get.iDisplayLength'); 
    if(I('post.pro_name')){
        $condition['pro_name'] = I('post.pro_name');
    }
    if(I('post.pro_no')){
        $condition['pro_no'] = I('post.pro_no');
    }
    if(I('post.manager_no')){
        $condition['manager_no'] = I('post.manager_no');
    }
    if(I('post.repair_man')){
        $condition['repair_man'] = I('post.repair_man');
    }
    if(I('post.accept_time')){
        $condition['accept_time'] = I('post.accept_time');
    }
    if(I('post.disposal_result')){
        $condition['disposal_result'] = I('post.disposal_result');
    }
    $condition['_logic'] = 'and';
    $list = $acceptanceInfo->where($condition)->select();
//以上都是从数据库中查出来的数据啦,没什么好说的了,下面的才是最最重要的,将我们从数据库中取出来的数据发往前台,可以这么说吧
//人家前台解析需要json数据,所以我们也得给人家发json个数的数据嘛
    $num = count($list);
    $data = array(
        'iTotalRecords' => $num,//数据的总条数
        'iTotalDisplayRecords' => 10,//显示的条数
        'aaData' => $list //此处为我们的list数据也就是从数据库中取出来的了
);
    echo json_encode($data);
   
}
因为此个控件是最新接触的,用的时候查了老多资料,也借鉴了不少人的劳动成果,总算是完成了
 


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值