使用easyUI的DataGrid对表单进行增删

本文档介绍了如何使用easyUI的DataGrid组件进行表单的增加和删除操作。首先强调了查阅官方文档的重要性,接着展示了一个新增功能的弹窗效果,并提供了相关代码,包括弹出框代码、DataGrid列表、新增方法、加载表单数据及提交表单的方法。文章提到,还有通过编辑器直接在表单中编辑数据的另一种方式,建议读者参考easyUI文档自行学习。

使用easyUI的DataGrid对表单进行增删

首先我还是建议大家在写代码的时候对easyUI的文档进行一个了解,我自己就是在写代码的时候没有看文档,然后各种东西都是百度搜搜搜,写的很没有效率,而且对代码的了解也不够。

easyui文档链接: http://www.jeasyui.net/vue/655.html.

先上一个效果图
在这里插入图片描述
点击新增后就会有弹出框:
在这里插入图片描述

话不多说直接上代码

  1. 首先我们要先创建一个表单
    <div>
	    <span class="font7 font11">抵扣项目及金额:</span>
	    <table id="loanTrialtab"></table>
	</div>
	//这里这个input是我用来存loanTrialtab数据的地方,我采用的方式是把这个表单的数据用一个String来存到数据库,页面就给他弄成Json传
    <input type="hidden" id="accountsPayable" name="accountsPayable" />

  1. 弹出框代码
    <div id="addloanAccount_dialog" style="width:660px;height:300px;*height:300px;" class="easyui-window" closed="true" maximizable="false" minimizable="false">
							<ul class="main_key_ul ul400">
								<li>
				                   <span>请选择抵账项目:</span>
				                   <div class="div_style">
				                   //下拉框需要验证加是否必填,required这个参数对下拉框好像没有限制到,所以要另外验证  editable设置是否可以对下拉框输入
				                   	<select name="planProject"  id="planProject" required="true" class="input_style easyui-combobox" editable="false" required="true" style="width: 200px;" panelwidth="200px"	panelheight="auto">
				                   	//panelwidth这个参数是设置下拉框的默认宽度,因为不设置可能会存在下拉框加载不出来的情况(我觉得就是我用的浏览器太老了)
				                   		<option value="担保费">担保费</option>
				                   		<option value="其他手续费">其他手续费</option>
				                   		<option value="逾期手续费">逾期手续费</option>
				                   		<option value="委贷手续费">委贷手续费</option>
				                   	</select>
				                   </div>
				                   <i>*</i>
				                   
								</li>
								<li>
				                   <span>抵扣金额(万元)</span>
				                   <div class="div_style">
				                   	<input  class="input_style easyui-validatebox amountUnify " style="width:200px;" name="planAmount" 
				                   	type="text" maxlength="12" id="planAmount"	validType="validateDouble[9,6]" 
				                   	required="true" onkeyup="this.value=this.value.replace(/[^\d\.]/g,'');"  value=""/>
				                   	//这里是加了一些金额限制,只能输入数字
				                   </div>
				                   <i>*</i>
								</li>
							</ul>
					</div>
					<!-- 添加汇总限制性条件弹窗 -->

  1. DataGrid 列表
    function initProjectPhasedRepayment() {
		// 列表加载
		$('#loanTrialtab')
				.datagrid(
						{
							width : 600,//宽度
							height : 'auto',//高度
							fitColumns : true,//设置为 true,则会自动扩大或缩小列的尺寸以适应网格的宽度并且防止水平滚动。
							rownumbers : true,//设置为 true,则显示带有行号的列。
							striped : true,//设置为 true,则把行条纹化。(即奇偶行使用不同背景色)
							singleSelect : true,//设置为 true,则只允许选中一行。
							page:1,
							rows:10,
							resize : 'auto',
							columns : [ [ {
								field : 'id',
								hidden : true
							}, {
								title : '请选择抵账项目',
								field : 'planProject',
								width : 150,
								align : 'left',
								editable:false
							}, {
								field : 'planAmount',
								title : '抵扣金额(万元)',
								width : 150,
								align : 'left'
							} ] ],
							toolbar : [
									{
										text : '新增',
										iconCls : 'icon-add',//定义按钮的样式
										handler : function() {
											openDialog();  //这里是自己写的新增的方法,也可以在这里面直接用编辑器完成新增,我这种是因为其中的在下拉框中编辑会有浏览器产出的bug,所以用的弹出框形式
										}
									},
									'-',
									{
										text : '删除',
										iconCls : 'icon-remove',//定义按钮的样式
										handler : function() {
											var row = $('#loanTrialtab')
													.datagrid('getSelected');//这里是获取选中行
											if (row) {//当row 为选中行时进入方法调用deleteRow删除
												var rowIndex = $('#loanTrialtab').datagrid(
																'getRowIndex',row)
												$('#loanTrialtab').datagrid(
														'deleteRow', rowIndex);
											} else {
												//提示错误信息,这里我们是内部封装的方法就不展示了
											}
										}
									} ],
							onBeforeLoad : function() {
								$('#loanTrialtab').datagrid('rejectChanges');
							},
							onClickRow : function(rowIndex) {
								if (validatePlanRows()) {
									$('#loanTrialtab').datagrid('acceptChanges');
									$('#loanTrialtab').datagrid('beginEdit',rowIndex);
								}
							},
							onLoadSuccess : function() {
								//当数据加载成功时触发。
							}
						});

		selectFrom(); //此方法
	}
  1. 新增方法
   function openDialog(){//这里是一个弹出框
		$('#addloanAccount_dialog').dialog("open").dialog('setTitle', '新增').window('resize',{
			top:200, left:300
		});
	}

  1. function需要加载一下
$(function() {

   initDialog();//这里是直接放到function中,因为页面会首先加载function,所以写在这里是加载控件
   setTimeout("initProjectPhasedRepayment()", 300);  //这里延迟0.3s加载表单控件
}

6.initDialog

//保存
	function initDialog(){
		$('#addloanAccount_dialog').dialog({
			modal:true,
			onClose : function() {
			}, 
			buttons:[{
				text:'确定',
				id:'dialogSaveBtntwe',
				handler:function(){
					var planProject =$("#planProject").combobox("getText");
					var planAmount =$("#planAmount").val();
					var a=false;
					//因为我设置的这俩参数是必填,这里就是判断他们是否为空
					if(planProject.length==0||planProject==""){
						a=false;
					}else{
						a=true;
					}
					if(planAmount.length==0||planAmount==""){
						a=false;
					}else{
						a=true;
					}
					if(a==true){
						$('#loanTrialtab').datagrid('insertRow', {
							row : {
								planProject : planProject,
								planAmount : planAmount
							}
						});
				        $('#addloanAccount_dialog').dialog('close');
					}else{
						//这里弹出错误信息
						return false;
					}
					
				}
			},{
				text:'关闭',
				handler:function(){
					$('#addloanAccount_dialog').dialog('close');
				}
			}]
		});
	}

7.initDialog
提交表单的方法
表单我没有写出来,这里就参照你们的保存或提交方法了

//这里的写法就是获取填写好了的datagrid的数据,然后把我们前面定义的input的value值,变成我们的datagrid的数据,这样就把datagrid的值变成了一个input啦,就不用再去列多个字段,或者新建一个对象啥的了
const objToStr = JSON.stringify(getRepaymentData());
		$("#accountsPayable").val(objToStr);
		

8.获取表单数据、

//获取datagrid数据
	function getRepaymentData(){
		$('#loanTrialtab').datagrid('acceptChanges');
		var date = $('#loanTrialtab').datagrid('getRows');
		return date;
	};

9.加载后台的数据到datagrid上面 selectFrom

function selectFrom(){
        //${repayDebt.accountsPayable}这个值就是我后台刚刚保存了的值,因为我是把datagrid的值存成了一个字符串的
		var dd = JSON.parse('${repayDebt.accountsPayable}');//这里后台传过来的值需要转换一下,因为我是用字符串保存这个datagrid的数据的
		if(dd!=null&&dd!=""){
		    var str1 = null;
		    var str2 = null;
		    var str3 = null;
		    var regPos = /^\d+(\.\d+)?$/; //非负浮点数
		    for (var p in dd) {//遍历json数组时,这么写p为索引,0,1
		    	str1 = dd[p].id;
		    	str2 = dd[p].planProject;
		    	str3 = dd[p].planAmount;
		    	if(regPos.test(p)){
		    		$('#loanTrialtab').datagrid('appendRow',{
		    			id: str1,
		    	        planProject: str2,
		    	        planAmount: str3
		        	});
		    	}
		    }
		}
		
	}

10.最后再来个后台怎么取出表单数据吧

//导入的是import net.sf.json.JSONArray;
//import net.sf.json.JSONObject;  这俩也是我遇到的坑,由于导入的包不对也出过错
	JSONArray jsonArray1 = JSONArray.fromObject(repayDebt.getAccountsPayable());
        for (int i = 0; i < jsonArray1.size(); i++) {
        	JSONObject jsonObj = jsonArray1.getJSONObject(i);
        	String planAmount = jsonObj.getString("planAmount");
        	String planProject = jsonObj.getString("planProject");
        }

代码顺序些混乱了,但是逻辑应该还是清楚的
可能看着没什么说明,但看注释都差不多在代码里面写了,我也不多说啥了。本来也不是什么很复杂的东西,主要是看那个easyui的说明文档。

有两种方式可以实现往datagrid插入数据的,我这种是加了个弹出框,还有一种方式就是加编辑器,然后直接在表单中数据,具体方式也差不多,需要调用editor编辑器,这种方式大家可以看下说明文档,应该没什么问题。

这个东西也算是我这个小菜鸟的一个总结吧,加油明天!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值