要解决的问题
表单式增加,更改和查看详细信息
将表单序列化成json
遇到的问题
- 弹出表单
- 新增和更改公用一个表单
- 编辑表单时自动填充已有字段
- 表格中未显示的字段仍然能够自动填充到表单
- 删除更改成功,增加失败(http 415)
解决问题的方法
通过工具栏按钮弹出dialog
用dialog组件包裹form可为form增加dialog拥有的行为(弹出,关闭)
表单式操作Basic CRUD Application
表单数据填充是根据row的field来加载的
自动填充的原理是row 的field和表单元素中name对应,row中没有的数据是无法加载到表单的
可以设置表格中的字段隐藏,这样表单仍然会加载隐藏的数据
datagrid列属性hidden
来控制列的显示和隐藏
增加和(删除,查询,更改)的区别
新增加时,row会全部复制表单字段的值
因为查询出来的数据是有id的,更改和删除时也是根据id来操作的,但是增加时有id一般会出错,
一般的主键都是数据库里自增的,若手动设置id基本会插入失败
所以增加之前必须获得的数据进行处理,删掉id属性
代码
表单序列化
因为是jqeury插件形式的代码,所有jquery对象都可用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| $.fn.serializeObject = function() { var o = {}; var a = this.serializeArray(); $.each(a, function() { if (o[this.name] !== undefined) { if (!o[this.name].push) { o[this.name] = [o[this.name]]; } o[this.name].push(this.value || ''); } else { o[this.name] = this.value || ''; } }); return o; } function savePt(){ if(formMethod == undefined){return} var ptjson = $("#fm").serializeObject() console.log("保存之后的序列化") console.log(ptjson) if(formMethod == "add"){ delete ptjson['ptId'] console.log("删除ptId属性"+ptjson) } console.log(url) $.ajax({ url : url, type : "POST", data : JSON.stringify(ptjson), dataType : "json", contentType : "application/json", success : function(data) { $('#dlg').dialog('close') alert("数据提交成功") query(); }, error : function(data){ alert("数据提交失败") } }) $('#dg').datagrid('loaded'); $('#dg').datagrid('reload'); }
|
表单加载和清除
1 2 3 4 5 6
| function loadRemote(){ $('#ff').form('load', 'form_data1.json'); } function clearForm(){ $('#ff').form('clear'); }
|
为dialog底部添加按钮
1 2 3 4 5 6 7 8 9 10 11
| <div id="dlg" class="easyui-dialog" style="width: 800px; height: 500px; padding: 10px 20px" closed="true" buttons="#dlg-buttons"> <form></form> <div id="dlg-buttons" style="display: block"> <a href="#" class="easyui-linkbutton" iconCls="icon-ok" onclick="savePt()">保存</a> <a href="#" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#dlg').dialog('close')">取消</a> </div> </div>
|
增加之前删除多余的属性
1 2 3 4 5 6 7 8 9 10 11 12 13
| function getFmJsonWithRightFormat(moduleForm){ var fm = $(moduleForm) var fmJson = fm.serializeObject() console.log("保存之后的序列化") console.log(fmJson) if(formMethod == "add"){ delete fmJson['ptId'] console.log("删除ptId属性"+fmJson) } return fmJson }
|