最近项目中用了Bootstrap的样式风格,控件用了JQuery Datatables,主要有几下几点目标:

  1. 实现BootStrap风格的table,使用Ajax获取数据,并有勾选项
  2. 可以实现全选,单击勾选
  3. 双击行弹出编辑对话框,点击保存使用Ajax传送到服务端保存
  4. 实现批量删除
  5. 分页操作(下次再记录)
  6. 查询操作(下次再记录)
  7. 排序操作(下次再记录)

第一部分:

编写一个只有thead的table,tbody会在JS函数中自动生成。

HMTL代码如下:

             <table id="example" class="table table-striped table-bordered table-hover">
<thead>
<tr>
<th class="center">
<label class="position-relative">
<input type="checkbox" class="ace"/>
<span class="lbl"></span>
</label>
</th>
<th>公司名称</th>
<th>简称</th>
<th>所在城市</th>
<th>地址</th>
<th>联系人</th>
<th>联系电话</th>
</tr>
</thead> </table>

直接在该Table上加入JS代码

 $('#example').dataTable({
"oLanguage": { //语言设置
"sProcessing": "正在加载中......",
"sLengthMenu": "每页显示 _MENU_ 条记录",
"sZeroRecords": "对不起,查询不到相关数据!",
"sEmptyTable": "表中无数据存在!",
"sInfo": "当前显示 _START_ 到 _END_ 条,共 _TOTAL_ 条记录",
"sInfoFiltered": "数据表中共为 _MAX_ 条记录",
"sSearch": "搜索",
"oPaginate": {
"sFirst": "首页",
"sPrevious": "上一页",
"sNext": "下一页",
"sLast": "末页"
}
},
bAutoWidth: false, //自动适应宽度
"bFilter": false, //查询
"bSort": true, //排序
"bInfo": false, //页脚信息
"bLengthChange": false, //改变每页显示数据数量
"bServerSide": true, //服务器数据
"sAjaxSource": '/XXX/XXX/GetList',
"bProcessing": true, //当datatable获取数据时候是否显示正在处理提示信息。
"bPaginate": true, //显示分页器
"iDisplayLength ": 10, //一页显示条数
"aoColumns": [
{
//自定义列
"sName":"Id", //Ajax提交时的列明(此处不太明白,为什么用两个属性--sName,mDataProp)
"mDataProp": "Id", //获取数据列名
"sClass": "center", //样式
"bStorable": false, //该列不排序
"render": function(data, type, row) { //列渲染
return '<label class="position-relative">' +
'<input type="checkbox" class="ace" value="'+data+'"/>' +
'<span class="lbl"></span>' +
'</label>';
}
},
{
"sName": "Name",
"mDataProp": "Name",
"bSearchable": true, //检索可用
"bStorable": true
},
{
"sName": "CustomerSN",
"mDataProp": "CustomerSN",
"bSearchable": false,
"bStorable": false
},
{
"mDataProp": "City",
"sName": "City"
},
{
"sName": "Address",
"mDataProp": "Address"
},
{
"sName": "Contact",
"mDataProp": "Contact"
},
{
"sName": "ContactPhone",
"mDataProp": "ContactPhone"
}
]
});

第二部分:

加入全选,点击一行将Checkbox勾选功能,使用纯JS实现

      $(document).on('click', 'th input:checkbox', function() {
var that = this;
$(this).closest('table').find('tr > td:first-child input:checkbox')
.each(function() {
this.checked = that.checked;
$(this).closest('tr').toggleClass('selected');
});
}); //对行单击添加监听事件
$('#example tbody').on('click', 'tr', function () {
var tr = $(this).closest('tr');
var checkbox = tr.find('td:first-child input:checkbox')[0];
checkbox.checked = !checkbox.checked; });

全选,单击勾选

第三部分:

首先建立一个模态框(用BootStrap实现),然后双击在JS中控制来显示该模态框。最后用Ajax保存

 <div class="modal fade" id="newPopUp">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="True">&times;</button>
<h4 class="modal-title" id="newCustomerLabel">新增客户</h4>
</div>
<div class="modal-body">
<form class="form-horizontal" role="form" id="customerForm">
<div class="form-group">
<label for="inputName" class="col-sm-2 control-label">客户名称</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="inputName" placeholder="客户名称"/>
</div>
</div>
...
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-success" onclick=" saveItem() ">保存</button>
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
</div>
</div>
</div>
</div>

模态框

    //对行双击添加监听事件
$('#example tbody').on('dblclick', 'tr', function () {
var tr = $(this).closest('tr');
var id = tr.find('td:first-child input:checkbox').val();//获取Checkbox的值
editItem(id);
});
//编辑
function editItem(id) {
//更改模态窗口名称
var modal = $('#newPopUp');
modal.find('#newCustomerLabel').text("编辑");
$.ajax({
url: "/XXX/XXX/GetItem",
type: "GET",
data: { "Id": id },
success: function (result) {
//赋值
$('#inputName').val(result.Name);
....
}
});
}

对行双击添加监听事件

     //保存
function saveItem() {
var name = $('#inputName').val();
... $.ajax({
url: "/XXX/XXX/Post",
type: "POST",
data: { "Name": name....},
success: function() {
$('#newPopUp').modal('hide');
reloadList();
}
});
}

保存操作

第四部分:

将勾选的项删除,如果没有勾选项目,弹出提示对话框,实现也很简单。

     //删除操作
function deleteItem() {
//在此用了BootStrap的一个插件,BootStrap.Message,并中文化
$.messager.model = {
ok: { text: "确认", classed: 'btn-info' },
cancel: { text: "取消", classed: 'btn-danger' }
};
//获取所有勾选ID
var ids="";
$('#example').find('tr > td:first-child input:checkbox')
.each(function () {
if (this.checked) {
ids+=$(this).val()+",";
}
});
//如果没有勾选,提示
if (ids === "") {
$.messager.alert("请选择一行数据!");
return;
} else {
ids = ids.substr(0, ids.length - 1);
} $.messager.confirm("删除", "确认要删除吗?", function () {
$.ajax({
url: "/XXX/XXX/Delete",
type: "Delete",
data: { "ids": ids },
success: function () {
reloadList();//重新加载
}
});
});
}

删除操作

    //刷新
function reloadList() {
var tables = $('#example').dataTable().api();//获取DataTables的Api,详见 http://www.datatables.net/reference/api/
tables.ajax.reload();
}

刷新

JQuery Datatables(一)的更多相关文章

  1. [jQuery]jQuery DataTables插件自定义Ajax分页实现

    前言 昨天在博客园的博问上帮一位园友解决了一个问题,我觉得有必要记录一下,万一有人也遇上了呢. 问题描述 园友是做前端的,产品经理要求他使用jQuery DataTables插件显示一个列表,要实现分 ...

  2. jquery Datatables 行数据删除、行上升、行下降功能演示

    Datatables 是一款jquery表格插件.它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能. 官方网站:http://www.datatables.net Datatables ...

  3. jQuery datatables

    jQuery datatables 属性,用例 参考:http://datatables.club/example/ http://blog.csdn.net/mickey_miki/article/ ...

  4. ASP.NET MVC+EF在服务端分页使用jqGrid以及jquery Datatables的注意事项

    引言: 本人想自己个博客网站出来,技术路线是用ASN.NET MVC5+EF6(Code First)+ZUI+各种Jquery插件,有了这个想法之后就开始选择UI,看了好多bootstrap的模板之 ...

  5. jQuery DataTables && Django serializer

    jQuery DataTables https://www.datatables.net 本文参考的官方示例 http://datatables.net/release-datatables/exam ...

  6. Jquery.Datatables 服务器处理(Server-side processing)

    看了看介绍 http://datatables.club/manual/server-side.html 没有经过处理的分页,先显示出来看看效果,就这样写(存储过程自己写) cshtml " ...

  7. Jquery Datatables 请求参数及接收参数处理

    Jquery Datatables 请求参数及接收参数处理 /** * Created by wb-wuyifu on 2016/8/9. */ /** * Created by wb-wuyifu ...

  8. Jquery DataTables相关示例

    一.Jquery-DataTables DataTables 是jquery的一个开源的插件.它具有高度灵活的特性,基于渐进增强的基础,可以为任何表格添加交互.它特性如下: 提供分页,搜索和多列排序: ...

  9. Jquery DataTables warning : Requested unknown from the data source for row 0

    昨天在做 Jquery DataTables 的时候,遇到的一个问题,我使用MVC,在tables上加入了一个actionlink的href.但是在运行起来的时候,报错: DataTables war ...

  10. jQuery DataTables Plugin Meets C#

    Over the weekend, I was doing some work on the internal CMS we use over at eagleenvision.net and I w ...

随机推荐

  1. 性能量化之cpu

    系统现在很慢”似乎是对系统的性能最常用的抱怨了,但究竟慢到什么程度,如何来界定慢,可能需要对性能进行量化,对于OS来说,大致主要分为cpu,内存,磁盘,网络等组件,对这些维度的性能量化,不但可以更准确 ...

  2. UNion ALL 和 UNION 的区别

    UNION: 指定合并多个结果集并将其作为单个结果集返回.ALL: 将全部行并入结果中.其中包括重复行.如果未指定该参数,则删除重复行.

  3. apache的FileUtils方法大全

    FileUtils 获取系统的临时目录路径:getTempDirectoryPath() [java] view plaincopyprint? public static String getTem ...

  4. Vim常用的快捷键列表

    insert: i:insert at now position 在光标之前插入 a:insert append 在光标之后插入 o:下面新建一行插入 s:删除后插入 <<:delete ...

  5. uva 10047 the monocyle (四维bfs)

    算法指南白书 维护一个四维数组,走一步更新一步 #include<cstdio> #include<cstring> #include<queue> #includ ...

  6. Windows不能在本地计算机启动OracleDBConsoleorcl .错误代码2

    Windows 不能在 本地计算机 启动 OracleDBConsoleorcl.有关更多信息,查阅系统事件日志.如果这是非 Microsoft 服务,请与服务厂商联系,并参考特定服务错误代码 2. ...

  7. 字符编码笔记:ASCII,Unicode和UTF-8,附带 Little endian和Big endian的解释

    作者: 阮一峰 日期: 2007年10月28日 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步 ...

  8. thinkphp如何写find_in_set这样的orm查询封装

    今天写thinkphp的orm封装的时候 需要写一个 select * from table where user_id=xxx and find_in_set(100,group_id)这样的SQL ...

  9. web 网站安全证书已过期或不可信 是否继续浏览

    发生环境:魅族MX4  uc浏览器 IIS部署SSL证书后提示不可信的解决方案 第一步:打开mmc——点击文件——添加删除管理单元——证书——计算机帐户 第二步:在计算机帐户的个人证书里面导入pfx格 ...

  10. ASP.NET- web.config配置用户出错页

    很简单,刚好用到,收藏 RemoteOnly是自定义用户错误,改成On,将所有错误都不让用户看见 每当用户访问错误页面时,会出现不友好的404错误,所以为了防止这种不友好,我们在web.config中 ...