JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
一篇关于JQueryEasyUI学习之datagrid添加、修改、删除学习笔记教程有需要了解的朋友可参考本的笔记,批量删除,双击表单修改、选中行修改,增加行修改,再有就是扩展editor的方法,无需废话,直接上代码,代码中的注释写的很详细
<scripttype="text/javascript"charst="utf-8">vareditFlag=undefined;//设置一个编辑标记 //因为layout框架指向href时,只取html页面body中间的部分,所以该页面这样写即可 //有datagrid包含属性较多,所以尽量使用js的方式初始化datagrid框架 $(function(){ $("#dg").datagrid({ url:"GetJson.ashx",//指向一个一般处理程序或者一个控制器,返回数据要求是Json格式,直接赋值Json格式数据也可,我以demo中自带的Json数据为例,就不写后台代码了,但是我会说下后台返回的注意事项 iconCls:"icon-add", fitColumns:false,//设置为true将自动使列适应表格宽度以防止出现水平滚动,false则自动匹配大小 //toolbar设置表格顶部的工具栏,以数组形式设置 idField:'id',//标识列,一般设为id,可能会区分大小写,大家注意一下 loadMsg:"正在努力为您加载数据",//加载数据时向用户展示的语句 pagination:true,//显示最下端的分页工具栏 rownumbers:true,//显示行数1,2,3,4... pageSize:10,//读取分页条数,即向后台读取数据时传过去的值 pageList:[10,20,30],//可以调整每页显示的数据,即调整pageSize每次向后台请求数据时的数据 //由于datagrid的属性过多,我就不每个都介绍了,如有需要,可以看它的API sortName:"name",//初始化表格时依据的排序字段必须和数据库中的字段名称相同 sortOrder:"asc",//正序 columns:[[ { field:'code',title:'Code',width:100, editor:{//设置其为可编辑 type:'validatebox',//设置编辑样式自带样式有:text,textarea,checkbox,numberbox,validatebox,datebox,combobox,combotree可自行扩展 options:{} } }, { field:'name',title:'Name',width:100,sortable:true, editor:{//设置其为可编辑 type:'validatebox',//设置编辑格式 options:{ required:true//设置编辑规则属性 } } },//sortable:true点击该列的时候可以改变升降序 { field:'addr',title:'addr',width:100, editor:{//设置其为可编辑 type:'datetimebox',//这里我们将进行一个datetimebox的扩展 options:{ required:true//设置编辑规则属性 } } } ]],//这里之所以有两个方括号,是因为可以做成水晶报表形式,具体可看demo toolbar:[{//在dategrid表单的头部添加按钮 text:"添加", iconCls:"icon-add", handler:function(){ if(editFlag!=undefined){ $("#dg").datagrid('endEdit',editFlag);//结束编辑,传入之前编辑的行 } if(editFlag==undefined){//防止同时打开过多添加行 $("#dg").datagrid('insertRow',{//在指定行添加数据,appendRow是在最后一行添加数据 index:0,//行数从0开始计算 row:{ code:'', name:'请输入姓名', addr:'' } }); $("#dg").datagrid('beginEdit',0);//开启编辑并传入要编辑的行 editFlag=0; } } },'-',{//'-'就是在两个按钮的中间加一个竖线分割,看着舒服 text:"删除", iconCls:"icon-remove", handler:function(){ //选中要删除的行 varrows=$("#dg").datagrid('getSelections'); if(rows.length>0){//选中几行的话触发事件 $.message.confirm("提示","您确定要删除这些数据吗?",function(res){//提示是否删除 if(res){ varcodes={}; for(vari=0;i<rows.length;i++){ codes.push(rows[i].code); } console.info(codes.join(','));//拼接字符串并传递到后台处理数据,循环删除,成功后刷新datagrid } }); } } },'-',{ text:"修改", iconCls:"icon-edit", handler:function(){ //选中一行进行编辑 varrows=$("#dg").datagrid('getSelections'); if(rows.length==1){//选中一行的话触发事件 if(editFlag!=undefined){ $("#dg").datagrid('endEdit',editFlag);//结束编辑,传入之前编辑的行 } if(editFlag==undefined){ varindex=$("#dg").datagrid('getRowIndex',rows[0]);//获取选定行的索引 $("#dg").datagrid('beginEdit',index);//开启编辑并传入要编辑的行 editFlag=index; } } } },'-',{ text:"保存", iconCls:"icon-save", handler:function(){ $("#dg").datagrid('endEdit',editFlag); } },'-',{ text:"撤销", iconCls:"icon-redo", handler:function(){ editFlag=undefined; $("#dg").datagrid('rejectChanges'); } },'-'], onAfterEdit:function(rowIndex,rowData,changes){//在添加完毕endEdit,保存时触发 console.info(rowData);//在火狐浏览器的控制台下可看到传递到后台的数据,这里我们就可以利用这些数据异步到后台添加,添加完成后,刷新datagrid editFlag=undefined;//重置 },onDblClickCell:function(rowIndex,field,value){//双击该行修改内容 if(editFlag!=undefined){ $("#dg").datagrid('endEdit',editFlag);//结束编辑,传入之前编辑的行 } if(editFlag==undefined){ $("#dg").datagrid('beginEdit',rowIndex);//开启编辑并传入要编辑的行 editFlag=rowIndex; } } }); }); //点击查找按钮出发事件 functionsearchFunc(){ alert("123"); $("#dg").datagrid("load",sy.serializeObject($("#searchForm").form()));//将searchForm表单内的元素序列为对象传递到后台 //这里介绍reload的使用,使用reload时,会默认记住当前页面,当点击查询时,如果我们查到的数据只有三条,我们每页显示10挑数据,当前页码是2,那么我们将无法在当前页面看到我们查询出的结果,只有将页面向前跳转才会看到,但是用load就不会出现这种情况 } //点击清空按钮出发事件 functionclearSearch(){ $("#dg").datagrid("load",{});//重新加载数据,无填写数据,向后台传递值则为空 $("#searchForm").find("input").val("");//找到form表单下的所有input标签并清空 } </script> <divclass="easyui-tabs"fit="true"border="false"> <divtitle="数据展示表格"border="false"fit="true"> <divclass="easyui-layout"fit="true"border="false"> <!--由于查询需要输入条件,但是以toolbar的形式不好,所以我们在Layout框架的头部north中书写查询的相关信息--> <!--这里我们尽量使其展示的样式与toolbar的样式相似,所以我们先查找toolbar的样式,并复制过来--> <divdata-options="region:'north',title:'高级查询'"style="height:100px;background:#F4F4F4;"> <formid="searchForm"> <table> <tr> <th>用户姓名:</th> <td> <inputname="name"/></td> </tr> <tr> <th>创建开始时间</th> <td> <inputclass="easyui-datetimebox"editable="false"name="subStartTime"/></td> <!--由于datebox框架上面的数据必须是时间格式的,所以我们用editable="false"来禁止用户手动输入,以免报错--> <th>创建结束时间</th> <td> <inputclass="easyui-datetimebox"editable="false"name="nsubEndTimeame"/></td> <td><aclass="easyui-linkbutton"href="javascript:void(0);"onclick="searchFunc();">查找</a></td> <td><aclass="easyui-linkbutton"href="javascript:void(0);"onclick="clearSearch();">清空</a></td> </tr> </table> </form> </div> <divdata-options="region:'center',split:false"> <tableid="dg"> </table> </div> </div> </div> </div>
扩展editor方法:datetimebox
$(function(){ /*扩展Editors的datetimebox方法*/ $.extend($.fn.datagrid.defaults.editors,{ datetimebox:{//为方法取名 init:function(container,options){ vareditor=$('<input/>').appendTo(container); options.editable=false;//设置其不能手动输入 editor.datetimebox(options); returneditor; }, getValue:function(target){//取值 return$(target).datetimebox('getValue'); }, setValue:function(target,value){//设置值 $(target).datetimebox('setValue',value); }, resize:function(target,width){ $(target).datetimebox('resize',width); }, destroy:function(target){ $(target).datetimebox('destroy');//销毁生成的panel } } }); });
以上所述是小编给大家介绍的JQueryEasyUIdatagrid添加、修改、删除操作的全部叙述,希望对大家有所帮助,如果大家想了解更多内容敬请关注毛票票网站!