研究一周左右的时间。写出datatable1.9.4 + .net mvcwebapi ajax分页的方法。现给出代码注释,希望对大家有帮助。
先来张最终的效果图吧。
再来一张展开的。
下面是JS代码:

var oTable = '';
$(function () {
    getList();
});
/* 加载默认数据 各个选项就不多说了 看不明白的请到官网查询 */
function getList() {
    oTable = $('#citytable')
       .dataTable({
           'bDeferRender': true,'bSort': false,'sPaginationType': 'full_numbers','idisplayLength': 17,'bLengthChange': false,'bProcessing': true,'bServerSide': true,'bFilter': false,'sAjaxSource': '/api/Province','sServerMethod': 'GET','sAjaxDataProp': 'aaData','aoColumns': [
                {
                    'sClass': 'details-control','mData': null,'sDefaultContent': '','sWidth': 50
                },{
                  'aTargets': [1],'mDataProp': 'Id','fnRender': function (oObj,sVal) {
                      return sVal;
                  },'bSortable': false,'sWidth': 50
              },{ 'mDataProp': 'Name','sWidth': 100 },{
                  'mDataProp': 'IsDel','mRender': function (data,type,full) {
                      var sReturn = '';
                      switch (data) {
                          case 0:
                              sReturn = '<span class="label label-success">使用中</span>';
                              break;
                          case 1:
                              sReturn = '<span class="label label-warning">停用</span>';
                              break;
                          default:
                              sReturn = '<span class="label label-danger">未知状态</span>';
                              break;
                      }
                      return sReturn;
                  },'sWidth': 100
              },{ 'mDataProp': 'CList','bVisible': false },{
                  'sDefaultContent': '',sVal) {
                      return fnoperation(oObj.aData);
                  }
              }],'oLanguage': {
               'sUrl': '../../customjs/jquery.dataTable.cn.txt'
           },'fnServerData': function (sUrl,aoData,fnCallback,oSettings) {
               var postData = {
                   page: parseInt(aoData[3]['value']) + 1 <= 1 ? 1 : parseInt(aoData[3]['value']) / parseInt(aoData[4]['value']) + 1,rows: 17
               };
               oSettings.jqXHR = $.ajax({
                   'url': sUrl,'data': postData,'dataType': 'json','cache': false,'type': 'GET','success': fnCallback
               });
           }
       });

    /*展开*/
    $('#citytable tbody').on('click','td.details-control',function () {
        var nTr = $(this).parents('tr')[0];
        if (oTable.fnIsOpen(nTr)) {
            oTable.fnClose(nTr);
        }
        else {
            oTable.fnopen(nTr,fnFormatDetails(oTable,nTr),'');
            $(this).removeClass('details-control');
            $(this).addClass('details-controls');
        }
    });
    /*关闭*/
    $('#citytable tbody').on('click','td.details-controls',function () {
        var nTr = $(this).parents('tr')[0];
        if (oTable.fnIsOpen(nTr)) {
            oTable.fnClose(nTr);
            $(this).removeClass('details-controls');
            $(this).addClass('details-control');
        }
        else {
            oTable.fnopen(nTr,'');
        }
    });
    /*操作生成*/
    function fnoperation(obj) {
        var add = '<a data-toggle="modal" href="#showModal1" onclick="cityAdd(' + obj.Id + ')" class="label label-primary" style="font-weight:lighter;">增加新城市</a>';
        var sub = '<a href="javascript:void(0);" id="subid' + obj.Id + '" onclick="sub(' + obj.Id + ')" class="label label-warning">停用</a>';
        var sbb = '<a href="javascript:void(0);" id="subid' + obj.Id + '" onclick="sbb(' + obj.Id + ')" class="label label-info">启用</a>';
        return obj.IsDel == 0 ? add + '&nbsp;&nbsp;' + sub : add + '&nbsp;&nbsp;' + sbb;
    }
}

/* 重新加载数据 */
function reloadList() {
    oTable.fnReloadAjax();
}

/* 具体城市信息 by zhangyu */
function fnFormatDetails(oTable,nTr) {
    var aData = oTable.fnGetData(nTr);
    var stemp = '',i = 0;
    var sOut = '<table id="pcity' + aData.Id + '" class="table table-condensed table-striped table-bordered pull-left table-hover">';
    sOut += '<thead>';
    sOut += '<tr>';
    sOut += '<th width="5%">编号</th><th width="15%">城市名称</th><th width="5%">状态</th><th>操作</th>';
    sOut += '</tr>';
    sOut += '</thead>';
    sOut += '<tbody>';
    $.each(aData.CList,function (n,value) {
        stemp += '<tr>';
        stemp += '<td>' + aData.CList[i].Id + '</td>';
        stemp += '<td>' + aData.CList[i].Name + '</td>';
        stemp += aData.CList[i].IsDel == 0 ? '<td name="cstatus' + aData.CList[i].Id + '"><span class="label label-success">使用中</span></td>' : '<td name="cstatus"><span class="label label-danger">停用</span></td>';
        stemp += aData.CList[i].IsDel == 0 ? '<td name="cctrl' + aData.CList[i].Id + '"><a href="javascript:void(0);" onclick="cityClose(' + aData.Id + "," + aData.CList[i].Id + ')" class="label label-warning">停用</a></td>' : '<td name="cctrl"><a href="javascript:void(0);" onclick="cityOpen(' + aData.Id + "," + aData.CList[i].Id + ')" class="label label-primary">启用</a></td>';
        stemp += '</tr>';
        i++;
    });
    sOut += '</tbody>'
    sOut += stemp;
    sOut += '</table>';
    stemp = '';
    i = 0;
    return sOut;
}

/* 查询 by zhangyu */
function search() {
    var oSettings = oTable.fnSettings();
    oSettings._idisplayLength = 10;
    oSettings._idisplayStart = 0;//这个地方要注意了一定要写上 不然会出现意想不到的效果 呵呵。
    oSettings.fnServerData = function (sUrl,oSettings) {
        var number = parseInt(aoData[3]['value']) / parseInt(aoData[4]['value']);//这个也是
        var postData = {
            page: parseInt(parseInt(aoData[3]['value']) / parseInt(aoData[4]['value'])) != number ? 1 : parseInt(aoData[3]['value']) / parseInt(aoData[4]['value']) + 1,//这个是当前页 因为查询后要重载所以要这样写
            rows: 10//分页条数
        };//这个是要查询传过去的参数 随便写多少都行 可以理解为重新加载时的查询条件。
        oSettings.jqXHR = $.ajax({
            'url': sUrl,'dataFilter': function (data,type) {
                return data;
            },'success': fnCallback
        });
    }
    oTable.fnReloadAjax();
}
2015-11-2补:fnReloadAjax()方法如下:
$.fn.dataTableExt.oApi.fnReloadAjax = function (oSettings,sNewSource,bStandingRedraw) {
    if (sNewSource !== undefined && sNewSource !== null) {
        oSettings.sAjaxSource = sNewSource;
    }
    // Server-side processing should just call fnDraw
    if (oSettings.oFeatures.bServerSide) {
        this.fnDraw();
        return;
    }
    this.oApi._fnProcessingdisplay(oSettings,true);
    var that = this;
    var iStart = oSettings._idisplayStart;
    var aData = [];
    this.oApi._fnServerParams(oSettings,aData);
    oSettings.fnServerData.call(oSettings.oInstance,oSettings.sAjaxSource,aData,function (json) {
        /* Clear the old information from the table */
        that.oApi._fnClearTable(oSettings);
        /* Got the data - add it to the table */
        var aData = (oSettings.sAjaxDataProp !== "") ?
            that.oApi._fnGetobjectDataFn(oSettings.sAjaxDataProp)(json) : json;
        for (var i = 0 ; i < aData.length ; i++) {
            that.oApi._fnAddData(oSettings,aData[i]);
        }
        oSettings.aidisplay = oSettings.aidisplayMaster.slice();
        that.fnDraw();
        if (bStandingRedraw === true) {
            oSettings._idisplayStart = iStart;
            that.oApi._fncalculateEnd(oSettings);
            that.fnDraw(false);
        }
        that.oApi._fnProcessingdisplay(oSettings,false);
        /* Callback user function - for event handlers etc */
        if (typeof fnCallback == 'function' && fnCallback !== null) {
            fnCallback(oSettings);
        }
    },oSettings);
};

到此这个普通分页+查询分页就写好了。大家可以试试 保证质量。有问题请加Q:80704820

datatable1.9.4 + .net mvcwebapi 分页的更多相关文章

  1. HTML实现代码雨源码及效果示例

    这篇文章主要介绍了HTML实现代码雨源码及效果示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  2. HTML5 Canvas实现放大镜效果示例

    这篇文章主要介绍了HTML5 Canvas实现放大镜效果示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  3. js中parseInt函数浅谈

    这篇文章介绍了Js中的parseInt函数,有需要的朋友可以参考一下

  4. js parsefloat parseint 转换函数

    JavaScript提供了3个显式的类型转换函数,分别是eval()、parseInt()和parseFloat()。

  5. javascript parseInt 函数分析(转)

    javascript的parseInt函数的一些问题分析

  6. 关于javascript中的parseInt使用技巧

    前面好几次遇到JavaScript中parseInt函数把字串转为数字,前面遇到过几次问题,然后就换其它方法进行比较。

  7. Java类型转换valueOf与parseInt区别探讨解析

    这篇文章主要为大家介绍了Java类型转换valueOf与parseInt区别探讨解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  8. javaScript parseInt字符转化为数字函数使用小结

    前几天做网站的时候需要讲数据库中的时间读取到变量中进行使用,用到parseInt函数,讲字符转化为数字。

  9. 强悍的身份验证和银行卡验证,不只是正则哦

    银行卡验证身份证验证

  10. datatable1.9.4 + .net mvcwebapi 分页

    研究一周左右的时间。写出datatable1.9.4+.netmvcwebapiajax分页的方法。现给出代码注释,希望对大家有帮助。先来张最终的效果图吧。再来一张展开的。下面是JS代码:到此这个普通分页+查询分页就写好了。大家可以试试保证质量。有问题请加Q:80704820

随机推荐

  1. xe-ajax-mock 前端虚拟服务

    最新版本见Github,点击查看历史版本基于XEAjax扩展的Mock虚拟服务插件;对于前后端分离的开发模式,ajax+mock使前端不再依赖后端接口开发效率更高。CDN使用script方式安装,XEAjaxMock会定义为全局变量生产环境请使用xe-ajax-mock.min.js,更小的压缩版本,可以带来更快的速度体验。

  2. vue 使用 xe-ajax

    安装完成后自动挂载在vue实例this.$ajaxCDN安装使用script方式安装,VXEAjax会定义为全局变量生产环境请使用vxe-ajax.min.js,更小的压缩版本,可以带来更快的速度体验。cdnjs获取最新版本点击浏览已发布的所有npm包源码unpkg获取最新版本点击浏览已发布的所有npm包源码AMD安装require.js安装示例ES6Module安装通过Vue.use()来全局安装示例./Home.vue

  3. AJAX POST数据中文乱码解决

    前端使用encodeURI进行编码后台java.net.URLDecoder进行解码编解码工具

  4. Koa2框架利用CORS完成跨域ajax请求

    实现跨域ajax请求的方式有很多,其中一个是利用CORS,而这个方法关键是在服务器端进行配置。本文仅对能够完成正常跨域ajax响应的,最基本的配置进行说明。这样OPTIONS请求就能够通过了。至此为止,相当于仅仅完成了预检,还没发送真正的请求呢。

  5. form提交时,ajax上传文件并更新到&lt;input&gt;中的value字段

  6. ajax的cache作用

    filePath="+escape;},error:{alert;}});解决方案:1.加cache:false2.url加随机数正常代码:网上高人解读:cache的作用就是第一次请求完毕之后,如果再次去请求,可以直接从缓存里面读取而不是再到服务器端读取。

  7. 浅谈ajax上传文件属性contentType = false

    默认值为contentType="application/x-www-form-urlencoded".在默认情况下,内容编码类型满足大多数情况。在这里,我们主要谈谈contentType=false.在使用ajax上传文件时:在其中先封装了一个formData对象,然后使用post方法将文件传给服务器。说到这,我们发现在JQueryajax()方法中我们使contentType=false,这不是冲突了吗?这就是因为当我们在form标签中设置了enctype=“multipart/form-data”,

  8. 909422229_ajaxFileUpload上传文件

    ajaxFileUpload.js很多同名的,因为做出来一个很容易。我上github搜AjaxFileUpload出来很多类似js。ajaxFileUpload是一个异步上传文件的jQuery插件传一个不知道什么版本的上来,以后不用到处找了。语法:$.ajaxFileUploadoptions参数说明:1、url上传处理程序地址。2,fileElementId需要上传的文件域的ID,即的ID。3,secureuri是否启用安全提交,默认为false。4,dataType服务器返回的数据类型。6,error

  9. AJAX-Cache:一款好用的Ajax缓存插件

    原文链接AJAX-Cache是什么Ajax是前端开发必不可少的数据获取手段,在频繁的异步请求业务中,我们往往需要利用“缓存”提升界面响应速度,减少网络资源占用。AJAX-Cache是一款jQuery缓存插件,可以为$.ajax()方法扩展缓存功能。

  10. jsf – Ajax update/render在已渲染属性的组件上不起作用

    我试图ajax更新一个有条件渲染的组件。我可以确保#{user}实际上是可用的。这是怎么引起的,我该如何解决呢?必须始终在ajax可以重新呈现之前呈现组件。Ajax正在使用JavaScriptdocument.getElementById()来查找需要更新的组件。但是如果JSF没有将组件放在第一位,那么JavaScript找不到要更新的内容。解决方案是简单地引用总是渲染的父组件。

返回
顶部