说明:datatables是一款jQuery表格插件。感觉EasyUI的datagrid更易用

内容:多选框和服务器端分页

缘由:写这篇博客的原因是datatables的文档写的不怎么样,找东西很麻烦

环境:asp.net mvc ,  vs2015+sqlserver2012

显示效果:

代码:

html部分:

<table id="tbUserList" class="table table-bordered table-hover">
<thead class="text-center ">
<tr>
<th>
<input type="checkbox" class="checkall" />
</th>
<th>ID</th>
<th>菜单名称</th>
<th>菜单路径</th>
<th>排序</th>
<th>添加日期</th>
</tr>
</thead> <tfoot class="text-center ">
<tr>
<th>
<input type="checkbox" class="checkall" />
</th>
<th>ID</th>
<th>菜单名称</th>
<th>菜单路径</th>
<th>排序</th>
<th>添加日期</th>
</tr>
</tfoot>
</table>

JS部分:

$(function () {
var _dataTables = $('#tbUserList').DataTable({
"lengthChange": false,
"searching": false,
"ordering": true,
"info": true,
"autoWidth": false,
"pageLength": 10,
"serverSide": true,
"ajax": {
"url": "/BasicManage/GetMenus",
"type":"POST"
},
"columns": [
{
"sClass": "text-center",
"data": "ID",
"render": function (data, type, full, meta) {
return '<input type="checkbox" class="checkchild" value="' + data + '" />';
},
"bSortable": false
},
{ "data": "ID" },
{ "data": "Name" },
{ "data": "MenuPage" },
{ "data": "SortNo" },
{ "data": "AddDateStr" }
]
});

JS部分简单说明:

"serverSide": true启动服务器端分页

"pageLength": 10 每页10条记录,注意pageLength注意大小写对应的值一定要是数字,,因为datatables的js里没有对这项类型转换,写成字符串会出问题。

看下面的源码

"ajax": 这个就不用说了,去哪取数据

”columns“: 这个的文档在这里 http://datatables.net/reference/option/columns

里面{}的顺序对应表格中列的位置。

”data“:对应的是后台传过来数据的key

重点说第一个{},是用来在第一列加一列多选框的。

”sClass“:"text-center"  设置的class名,多选框会居中显示,可以去datatables的css里搜索这个class名看具体设置

"data": "ID"  这是要用到的数据,我把checkbox的value设置为ID,这样方便取值

”render“ 这里就是要显示的checkbox多选框了

如何实现全选

注意这里用prop

 $(".checkall").click(function () {
var check = $(this).prop("checked");
$(".checkchild").prop("checked", check);
});

    获取选中的某一个checkbox的值

if ($(".checkchild:checked").length > 1)
          {
               alert("一次只能修改一条数据");
               return;
          }

var id = $(".checkchild:checked").val();

服务器后端如何传数据

 public JsonResult GetMenus()
{
int draw = Convert.ToInt32(Request["draw"]);
int start = Convert.ToInt32(Request["start"]);
int length = Convert.ToInt32(Request["length"]);
int totalCount = 0;
MenuDAO Dao = new MenuDAO();
var menus = Dao.GetMvcMenus((start/length)+1, length, out totalCount);
return Json(new { draw= draw, recordsTotal= totalCount, recordsFiltered= totalCount, data = menus }, JsonRequestBehavior.AllowGet);
}

说明: 前端会向后台传一些数据

draw:这个不用关心,直接给它返回去就好了,注意要变成int类型

start: 从第几条记录开始,从0开始计数,如果你每页设置10条记录,第一页传0,第二页传10,类推

length: 每页的记录条数,对应的前端js设置的pageLength。

返回json :Json(new { draw= draw, recordsTotal= totalCount, recordsFiltered= totalCount, data = menus }, JsonRequestBehavior.AllowGet);

recordsTotal,recordsFiltered这两个都填总记录数就行了,data里就是实际的数据

menus是一个 IEnumerable<Menu>集合

Menu menu = new Menu();
return menu.Select().Where().And("MenuType", "mvc").ExecPageDataTable("ORDER BY ParentID",row,pageSize,out totalCount,Db
.AsEnumerable().Select(d =>
new Menu
{
ID = d.Field<int>("ID"),
Name = d.Field<string>("Name"),
MenuPage = d.Field<string>("MenuPage"),
IconUrl = d.Field<string>("IconUrl"),
SortNo = d.Field<double?>("SortNo"),
Remark = d.Field<string>("Remark"),
ParentID = d.Field<int?>("ParentID"),
AddDateStr = d.Field<DateTime?>("AddDate").ToString()
});

题外话:在sqlserver2012上写分页sql非常简单,据说性能也有提升(没测试过)

  Select *  from  某表  ORDER BY 某些列   OFFSET (@row-1)*@pageSize ROWS FETCH NEXT @pageSize ROWS ONLY

替换相应参数  @row 取第几页, @pageSize 取多少条

datatables.js 简单使用--多选框和服务器端分页的更多相关文章

  1. js获取checkbox复选框获取选中的选项

    js获取checkbox复选框获取选中的选项 分享下javascript获取checkbox 复选框获取选中的选项的方法. 有关javascript 获取checkbox复选框的实例数不胜数.js实现 ...

  2. js操作checkbox(复选框)的方法总结

    收集了一些用js代码操作checkbox复选框的代码,分享出来,供需要的朋友参考: <script> //复选框checkbox 处理方法 //搜集整理 www.jbxue.com fun ...

  3. Js动态添加复选框Checkbox

    Js动态添加复选框Checkbox的实例方法!!! 首先,使用JS动态产生Checkbox可以采用如下类似的语句: var checkBox=document.createElement(" ...

  4. js进阶 9-15 多选框如何限制选中数目

    js进阶 9-15 多选框如何限制选中数目 一.总结 一句话总结: 1.多选框如何限制选中数目? 没点击选择一次,来统计现在总共选了多少个,如果超出,就给onclick事件返回false,取消oncl ...

  5. datatables.js 简单使用--弹出编辑框或添加数据框

    内容:选中某一条记录,弹出编辑框 环境:asp.net mvc ,  bootstrap 显示效果: 代码: 至于怎么弄多选框,在上一篇博客里已经有说明. 主要用到了bootstrap的模态窗,下面代 ...

  6. 简单的多选框选择功能js代码

    最近没事写了个特别基础的多选框功能代码,代码如下:js部分: //获取所有class为checkbox的多选按钮(需要以下功能需要先写出对应功能的元素). var checkBoxList = doc ...

  7. js自定义修改复选框单选框样式,清除复选框单选框默认样式

    之前做项目的时候,也遇到过需要按照设计稿把<input type="checkbox">和<input type="radio">的默认 ...

  8. 用js判断一个复选框是否被选中

    <html> <head>        <title>            复选框全选.全不选.反选.必选一个        </title>    ...

  9. js实现多级复选框的交互

    功能介绍   整个复选框是包含多级,可能有父级,可能有子级,在勾选复选框时,要做两种判断: 1要判断它下面有没有子级,有子级将子级的选中状态checked变得和自己一样. 2要判断它是否有父级,有父级 ...

随机推荐

  1. python web框架——扩展Django&tornado

    一 Django自定义分页 目的:自定义分页功能,并把它写成模块(注意其中涉及到的python基础知识) models.py文件 # Create your models here. class Us ...

  2. Android SQLite3工具常用命令行总结

    Android SDK的tools目录下提供了一个sqlite3.exe工具,这是一个简单的sqlite数据库管理工具.开发者可以方便的使用其对sqlite数据库进行命令行的操作. 程序运行生成的*. ...

  3. DataWindow.Net 2.5 配置

    在用过的所有的开发工具中,感觉最简单好用的就数PB了,他的DataWindow最方便,拖拖拽拽就把报表做好了,可惜现在很少人有用了.现在C/S系统一般用C#来做,但是做报表的时候总感觉没有DataWi ...

  4. 使用Facebook的SDK判斷來訪者是否已經按讃并成為本站粉絲團的成員

    今天公司裡要做活動,其中有一項活動內容是要求來訪者按一下facebook粉絲團的讃,按了讃之後贈送現金.Facebook被墻大家眾所周知,在百度搜了一下發現因為被墻的原因導致國內涉及到Facebook ...

  5. dubbo 管理控制台 的安装 dubbo-admin

    按照官方文档来,只是官方文档中提供的war包无法下载,我的环境至少是这样,不知道其他网络环境是否OK. war包下载地址:链接: http://pan.baidu.com/s/1i32fs7j 密码: ...

  6. Scala 深入浅出实战经典 第65讲:Scala中隐式转换内幕揭秘、最佳实践及其在Spark中的应用源码解析

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  7. 2.C#中泛型在方法Method上的实现

    阅读目录   一:C#中泛型在方法Method上的实现 把Persion类型序列化为XML格式的字符串,把Book类型序列化为XML格式的字符串,但是只写一份代码,而不是public static s ...

  8. 我的常用mixin 之 lines

    /** * 最多显示 $lineCount 行 * lines * * example: * @include lines; * @include lines(3); */ @mixin lines( ...

  9. 用Zim替代org-mode?

    三年前我玩过Zim,当时还写了一篇<Zim - 普通人的Org-mode>,当时还说我还是会坚持使用emacs org-mode.但最近我又在考虑是不是回头用Zim来写博客文章.整理知识库 ...

  10. ios辅助功能之voiceover实战

      一个元素朗读的内容可分为以下4个部分(4部分按先后顺序朗读) 1. Label:元素的标题 2. Value:元素的值(可选) 3. Traits:元素的特征,即类型,包含: 按钮/链接/搜索框/ ...