datagrid的修改和删除功能的实现
1.修改
双击,进入一行的编辑状态的功能的实现
2.删除
3.扩展easyui的datagrid,添加动态增加或删除Editor的方法
(1)背景要求:
对于某一列,比如密码,动态增加时候,是可以编辑的,但是如果保存之后,再对那一行编辑的时候,是不能修改的。
(2)解决方案
扩展代码:
- //扩展datagrid,添加动态增加或删除editor的方法
- $.extend($.fn.datagrid.methods,{
- addEditor:function(jq,param){
- if(param instanceof Array){
- $.each(param,function(index,item){
- var e=$(jq).datagrid('getColumnOption',item.field);
- e.editor=item.editor;
- });
- }else{
- var e = $(jq).datagrid('getColumnOption', param.field);
- e.editor = param.editor;
- }
- },
- removeEditor:function(jq,param){
- if(param instanceof Array ){
- $.each(param, function(index, item) {
- var e = $(jq).datagrid('getColumnOption', item);
- e.editor = {};
- });
- }else {
- var e = $(jq).datagrid('getColumnOption', param);
- e.editor = {};
- }
- }
- });
代码:
- <script charset=UTF-8">
- $(function(){
- //扩展datetimebox,由于editors里面没有datetimebox,所以要进行扩展
- $.extend($.fn.datagrid.defaults.editors, {
- datetimebox: {
- init: function(container, options){
- var editor = $('<input />').appendTo(container);
- options.editable=false; //在datetimebox 设置editable="false",这样用户就不能填写时间,只能选择时间
- editor.datetimebox(options);
- return editor;
- },
- destroy: function(target){//结束编辑行的时候销毁datetimebox
- $(target).datetimebox('destroy');
- },
- getValue: function(target){
- return $(target).datetimebox('getValue');
- },
- setValue: function(target, value){
- $(target).datetimebox('setValue',value);
- },
- resize: function(target, width){
- $(target).datetimebox('resize',width);
- }
- }
- });
- //扩展datagrid,添加动态增加或删除editor的方法
- $.extend($.fn.datagrid.methods,{
- addEditor:function(jq,param){
- if(param instanceof Array){
- $.each(param,function(index,item){
- var e=$(jq).datagrid('getColumnOption',item.field);
- e.editor=item.editor;
- });
- }else{
- var e = $(jq).datagrid('getColumnOption', param.field);
- e.editor = param.editor;
- }
- },
- removeEditor:function(jq,param){
- if(param instanceof Array ){
- $.each(param, function(index, item) {
- var e = $(jq).datagrid('getColumnOption', item);
- e.editor = {};
- });
- }else {
- var e = $(jq).datagrid('getColumnOption', param);
- e.editor = {};
- }
- }
- });
- var editRow=undefined; //用editRow存储开启编辑状态行的索引
- var usersearchForm=$("#admin_user_searchForm").form();//获取表单元素的值
- var userDatagrid=$("#admin_user_datagrid").datagrid({ //给datagrid初始化
- url:'',
- title:'用户列表',
- iconCls:'icon-save',
- pagination:true, //分页
- pagesize:10, //每页有10行数据
- pageList:[10,20,30,40], //注意这些数值是pagesize的倍数
- fit:true,
- fitColumns:false, //false,表示会出现横向滚动条;true,则表示不能出现横向滚动条(列少的时候用)
- nowarp:false, //当表格中某一行的一个列内容较多时,就会自动折行(换下一行显示)
- border:false, //去掉datagrid的边框
- idField:'id', //自动标记选中的行,换页后,前面所选中的行依然保留
- columns:[[
- {
- title:'编号',
- field:'id',
- width:100, //宽度一定要给出,不给出会报错
- sortable:true,
- checkbox:true, //选中框
- },{
- title:'姓名',
- field:'name',
- width:100,
- sortable:true,
- editor:{
- type:'validatebox',
- options:{
- required:true
- }
- }
- },{
- title:'密码',
- field:'password',
- width:100,
- editor:{
- type:'validatebox',
- options:{
- required:true
- }
- }
- },{
- title:'创建时间',
- field:'createdatetime',
- width:200,
- editor:{
- type:'datetimebox',
- options:{
- required:true
- }
- }
- },{
- title:'最后修改时间',
- field:'modifydatetime',
- width:200,
- editor:{
- type:'datetimebox',
- options:{
- required:true
- }
- }
- }
- ]],
- toolbar:[{
- text:'增加',
- iconCls:'icon-add',
- handler:function(){
- if(editRow != undefined){//如果有一行处在编辑状态,那么点击增加按钮时候,就要关闭它的行编辑状态
- userDatagrid.datagrid('endEdit',editRow);
- }
- if(editRow == undefined){//保持只有一行处在编辑状态,即==undefined的时候,才让其进行添加新的一行
- //***动态添加editor
- userDatagrid.datagrid('addEditor',{
- field:'password',
- editor:{
- type:'validatebox',
- options:{
- required:true
- }
- }
- });
- //添加到第一行
- userDatagrid.datagrid('insertRow',{
- index:0,//插入在第一行,index是从0开始的
- row:{
- id:'123',
- name:'请输入姓名',
- password:'请输入密码'
- }
- });
- userDatagrid.datagrid('beginEdit',0);//开启行编辑状态,index是从0开始的,从第0行开始编辑
- editRow=0; //记录开启编辑行的索引
- }
- }
- },'-',{
- text:'删除',
- iconCls:'icon-remove',
- handler:function(){
- var rows=userDatagrid.datagrid('getSelections');//记录选中的行数
- if(rows.length>0){
- $.messager.confirm('请确认','您确定要删除当前所有选择的项目么?',function(b){//当点击提示框的确定按钮的时候,b就是true
- if(b){
- var ids=[];//将要删除的行的id存放在ids中
- for(var i=0;i<row.length;i++){
- ids.push(rows[i].id);
- }
- /*此处与后台交互删除*/
- console.info(ids.join(','));
- }
- });
- }else{
- $.messager.alert('提示','请选择要删除的记录!','error');
- }
- }
- },'-',{
- text:'修改',
- iconCls:'icon-edit',
- handler:function(){
- var rows=userDatagrid.datagrid('getSelections');//记录选中的行数
- if(rows.length==1){
- //***动态修改editor
- userDatagrid.datagrid('removeEditor','password');
- if(editRow != undefined){//如果有一行处在编辑状态,那么点击增加按钮时候,就要关闭它的行编辑状态
- userDatagrid.datagrid('endEdit',editRow);
- }
- if(editRow == undefined){//保持只有一行处在编辑状态,即==undefined的时候,才让其进行添加新的一行
- var index=userDatagrid.datagrid('getRowIndex',rows[0]);//记录所选择行的索引,rows[0]表示一行
- userDatagrid.datagrid('beginEdit',index);//开启行编辑状态
- editRow=index; //记录开启编辑行的索引
- userDatagrid.datagrid('unselectAll'); //取消选中当前页所有的行
- }
- }
- }
- },'-',{
- text:'保存',
- iconCls:'icon-save',
- handler:function(){
- userDatagrid.datagrid('endEdit',editRow);//点击保存按钮,调用endEdit方法之后,就会自动触发调用onAfterEdit函数
- }
- },'-',{
- text:'取消编辑',
- iconCls:'icon-redo',
- handler:function(){
- editRow=undefined;
- userDatagrid.datagrid('rejectChanges'); //rejectChanges回滚
- userDatagrid.datagrid('unselectAll'); //取消选中当前页所有的行
- }
- },'-',
- ],
- onAfterEdit:function(rowIndex,rowData,changes){//关闭编辑状态,rowData是编辑行所对应的记录
- console.info(rowData);
- editRow=undefined; //将editRow置空,让其恢复原来的状态,因为在点击增加的时候,editRow就不为空了
- //*****与后台交互的位置****
- /* $.ajax(); success:function(rowData){}*/
- },
- //****双击,进入一行的行编辑状态***
- onDblClickRow:function(rowIndex,rowData){
- if(editRow != undefined){//如果有一行处在编辑状态,那么点击增加按钮时候,就要关闭它的行编辑状态
- userDatagrid.datagrid('endEdit',editRow);
- }
- if(editRow == undefined){//保持只有一行处在编辑状态,即==undefined的时候,才让其进行添加新的一行
- userDatagrid.datagrid('beginEdit',rowIndex);//开启行编辑状态
- editRow=rowIndex; //记录开启编辑行的索引
- }
- }
- });
- $("#searchForm").click(function(){//查询
- userDatagrid.datagrid('load',serializeObject(usersearchForm));
- });
- $("#cleanForm").click(function(){
- userDatagrid.datagrid('load',{});//就是查询所有的内容了,相当于恢复到初始的界面
- usersearchForm.find('input').val('');//将input输入框里面的值清空了
- });
- });
- function serializeObject(form){//将form表单元素的值序列化成对象
- var o={};
- $.each(form.serializeArray(),function(index){
- if(o[this['name']]){
- o[this['name']]=o[this['name']]+","+this['value'];
- }else{
- o[this['name']]=this['value'];
- }
- });
- return o;
- };
- </script>
- <meta http-equiv="content-type" content="text/html; charset=UTF-8">
- <div class="easyui-layout" fit="true" border="false">
- <div region="north" border="false" title="过滤" style="height:120px;overflow:hidden;">
- <form id="admin_user_searchForm">
- <table class="tableForm datagrid-toolbar" style="height:100%;width:100%">
- <tr>
- <th>用户名:</th>
- <td><input name="name" style="width:315px;"></td>
- </tr>
- <tr>
- <th>创建时间:</th>
- <td><input name="createdatetimeStart" class="easyui-datetimebox" editable="false" style="width:155px;">至<input name="createdatetimeEnd" class="easyui-datetimebox" editable="false" style="width:155px;"></td>
- </tr>
- <tr>
- <th>最后修改时间:</th>
- <td><input name="madifydatetimeStart" class="easyui-datetimebox" editable="false" style="width:155px;">至<input name="madifydatetimeEnd" class="easyui-datetimebox" editable="false" style="width:155px;">
- <a href="javascript:void(0);" class="easyui-linkbutton" id="searchForm">查询</a>
- <a href="javascript:void(0);" class="easyui-linkbutton" id="cleanForm">清空</a>
- </td>
- </tr>
- </table>
- </form>
- </div>
- <div region="center" border="false">
- <table id="admin_user_datagrid"></table>
- </div>
- </div>
datagrid的修改和删除功能的实现的更多相关文章
- 微信小程序云开发-云函数-云函数实现数据的查询、修改和删除功能
一.云函数获取商品信息 1.创建云函数getData,云函数功能:获取商品信息 2.在本地小程序页面调用云函数getData 二.云函数修改商品信息 1.创建云函数updateData,云函数功能: ...
- jsp 实现修改和删除功能
main.jsp 实现查询 在此界面快捷方式到修改界面 点击修改 会把数据传递到exit.jsp 修改 edit.jsp 前面数据: 数据库: /* Navicat Premium Data ...
- 基于SpringBoot从零构建博客网站 - 新增创建、修改、删除专栏功能
守望博客是支持创建专栏的功能,即可以将一系列相关的文章归档到专栏中,方便用户管理和查阅文章.这里主要讲解专栏的创建.修改和删除功能,至于专栏还涉及其它的功能,例如关注专栏等后续会穿插着介绍. 1.创建 ...
- Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
http://www.jb51.net/article/42016.htm 初识Jquery EasyUI看了一些博主用其开发出来的项目,页面很炫,感觉功能挺强大,效果也挺不错,最近一直想系统学习一套 ...
- 摘:通过ICursor对Table进行操作(添加、修改、删除)
通过ICursor对Table进行操作(添加.修改.删除) 连接上数据表的目的就是对其进行包括浏览.添加.修改.删除等基本操作. 浏览功能,之前文章中一提到,就是将Itable转换为DataTable ...
- 通过ICursor对Table进行操作(添加、修改、删除)
通过ICursor对Table进行操作(添加.修改.删除) 2010-03-16 16:07:37| 分类: 工作|举报|字号 订阅 来自:http://blog.163.com/liuyang12 ...
- 实例:SSH结合Easyui实现Datagrid的批量删除功能
在我先前的基础上面添加批量删除功能.实现的效果如下 删除成功 通常情况下删除不应该真正删除,而是应该有一个标志flag,但flag=true表示状态可见,但flag=false表示状态不可见,为删除状 ...
- MVC5 网站开发之七 用户功能 3用户资料的修改和删除
这次主要实现管理后台界面用户资料的修改和删除,修改用户资料和角色是经常用到的功能,但删除用户的情况比较少,为了功能的完整性还是坐上了.主要用到两个action "Modify"和& ...
- MVC5 网站开发之八 栏目功能 添加、修改和删除
本次实现栏目的浏览.添加.修改和删除. 栏目一共有三种类型. 常规栏目-可以添加子栏目,也可以添加内容模型.当不选择内容模型时,不能添加内容. 单页栏目-栏目只有一个页面,可以设置视图. 链接栏目-栏 ...
随机推荐
- java - Socket简单编程实践
1.简介: 1)SOCKET是应用程序和网络之间的一个接口.SOCKET创建设置好以后,应用程序可以: 通过网络把数据发送到socket . 通过网络从socket接收数据.(通信的前提是应用程序知道 ...
- 阐述简称PO,VO,TO,BO,DAO,POJO
PO(persistant object) 持久对象 在o/r映射的时候出现的概念,如果没有o/r映射,没有这个概念存在了.通常对应数据模型(数据库),本身还有部分业务逻辑的处理.可以看成是与数据库中 ...
- 三、css 和 js 的装载与执行
一个网站在浏览器端是如何渲染的? 一.html 页面加载渲染的过程. 请求回来最先应该是HTML,从一个字节流转换成字符流,浏览器拿到字符流,然后浏览器端进行相应的词法分析成相应的token,然后不断 ...
- ajax实现异步请求的过程
var xhr; xhr = new XMLHttpRequest(); //创建一个异步对象 xhr.open("Get", "test.a ...
- 【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:10.项目介绍之架构(2)
欢迎阅读我的开源项目<迷你微信>服务器与<迷你微信>客户端 前言 前面我们讲到<迷你微信>服务器端的主架构,现在我们来描述一下它的模块详细信息. 网络模块 从上图我 ...
- centOS7虚拟机和本机ping通
1.配置centOS虚拟机网卡 先设置桥接模式 此处的address要和本机的vmware在同一个网段 2.重启centOS网卡 3.关闭本机和虚拟机防火墙,防止ping不通 centOS命令: fi ...
- SQLServer从其他表获取的数据更新该表的一部分
在网上常见的是update a set username = username FROM b on a.userid=b.userid,该更新语句是对a表中所有行进行更新.如果只更新一部 ...
- 关于VPS主机KVM/OPENVZ/CN2区别与含义
1.OPENVZ OpenVZ是基于Linux内核和作业系统的操作系统级虚拟化技术.OpenVZ允许物理服务器运行多个操作系统,被称虚拟专用服务器(VPS,Virtual Private Server ...
- 将腾讯视频客户端缓冲的文件转换为一个MP4格式文件
打开腾讯视频windows客户端,播放要下载的视频,逐步快进使其缓冲完毕: 按照下图所示,复制缓存路径: 在cmd.exe的界面中输入“cd C:\854456b6d5a187ff3c0f553918 ...
- Linux I/O调度
一) I/O调度程序的总结 1) 当向设备写入数据块或是从设备读出数据块时,请求都被安置在一个队列中等待完成. 2) 每个块设备都有它自己的队列. 3) I/O调度程序负责维护这些队列的顺 ...