datatable动态表头+复合主键后台交互增删改

本来以为只需要做动态表头的查询,没想到还要做增删改...

因为是动态表头,而且是联合主键,到现在也没有什么头绪要怎么做...

想到哪里写到哪里吧,希望有大佬指导一下。

创建新增页面:

java:

@RequestMapping(value = "/toEditPage.do")
	public ModelAndView toEditMenuPage(HttpServletRequest request, HttpServletResponse response) throws Exception {

		
		ModelAndView mav = new ModelAndView();
		String parentMenuName = "";
		
		System.out.println("~~~~~~~~~~listcolu~~~~~~~~~~~"+JSON.toJSONString(listcolu));
		
		mav.addObject("parentMenuName", parentMenuName);
		mav.addObject("keyList", keyList);
		mav.addObject("listcolu", listcolu);
		mav.addObject("ztreeids", ztreeids);
		
		/*if(keyList != null && !"".equals(keyList)){
//			TCashboxCommandEntity cashBoxCEntity = stdataService.getStdListByEditDate(keyList);
//			mav.addObject("cashBoxCEntity", cashBoxCEntity);
		}*/
		
		mav.setViewName("stdata/createStdata");
		return mav;
	}

注:这里没有注明返回数据获取的详细

然后是构建jsp页面 用的c标签

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="en">
<head>
	
</head>

<body class="body-box">
   <form name="dataFrm">
        <table class="table table-bordered table-edit">
		<tbody id="editTbody">
			<input type="hidden" id="ztreeids" name="ztreeids"/>   
			<c:forEach items="${listcolu}" var="colu">
				<c:choose>
					<c:when test="${colu.(需要的bean的属性)}">
						<tr class="icList" id="${colu.(需要的bean的属性)}">
							<th>${colu.(需要的bean的属性)}</th>
							<td>
										<input type="text" id="${colu.(需要的bean的属性)}" name="${colu.view_iskey}" style="width:70%" placeholder="必填项" value="">
							</td>
						</tr>
					</c:when>
					<c:otherwise> 
						<tr class="icList" id="${colu.(需要的bean的属性)}">
								<th>${colu.(需要的bean的属性)}</th>
								<td>
									<input type="text" id="${colu.(需要的bean的属性)}" name="${colu.view_iskey}" style="width:70%" placeholder="" value="">
								</td>
						</tr>
					</c:otherwise>  
				</c:choose>
			</c:forEach>
		   </tbody>
	</table>
   </form>
                           
</body>
</html>

js获取提交数据:已经初步实现了新增 数据提交使用了提交表单 js这里有改动 更新...

	//新增按钮
	$("#addBtn").click(function(){
		var ztreeids = $("input:hidden[name='ztreeids']").val();
		if(!ztreeids){
			layer.msg('请选择数据类型!');
			return;
		};
		var index = layer.open({
			  type: 2,
			  title: false,
			  closeBtn: 0,
			  shadeClose: false,
			  maxmin: false,
			  area:['80%','80%'],
			  content: URL,
			}); 
		layer.full(index);
	});
	//保存
	$("#saveBtn").click(function(){
		var obj = document.getElementsByTagName("input");
	    for(var i=0;i<obj.length;i++){
	    	var vid = obj[i].id
	    	if(vid=="1"){
		    	var vname = obj[i].name;
		    	var v =  $('input[name='+vname+']').val();
		    	console.log(v);
		    	if(!v){
		    		layer.msg('必填项不能为空!');
					return false;
		    	}
	    	}
	    }
		var dataItem = $("form").serialize();
		var index = layer.load(1);
		$.ajax({ 
			type: 'POST',
			url: URL, 
			data:dataItem,
			success: function(resdata){
				//var jsonObj = $.parseJSON(resdata); 
				//var str = jsonObj.message;
 				layer.close(index);
				layer.alert(resdata.message,function(index){
	            	 var index = parent.layer.getFrameIndex(window.name); 
	     			 //window.parent.location.reload();
	     			 parent.init();
	     			 parent.layer.close(index);
	             });
              },
				error:function(){
					layer.close(index);
					layer.alert('数据提交失败!',{icon: 5});
				} 
		});
	});
	
	//关闭按钮
	$("#closeBtn").click(function(){
		var index = parent.layer.getFrameIndex(window.name); 
		parent.layer.close(index);
	});

后台接收数据java:

public void toEdit(HttpServletRequest request, HttpServletResponse response) throws Exception {
		String[] column = request.getParameterValues("column");
		Map<String,String> stdMap = new HashMap<String,String>();
		for(int i=0;i<column.length;i++) {
			String columnN = column[i];
			String columnV = request.getParameter(columnN);
			stdMap.put(columnN, columnV);
		}
		
		Map<String,String> resMap = new HashMap<String,String>();
		resMap.put("status", "提示");
		resMap.put("message", "操作成功!");
		
		String jsonString = JSON.toJSONString(resMap); 
		response.setCharacterEncoding("utf-8");
		response.getOutputStream().write(jsonString.getBytes("utf-8"));
	}


程序目前就写到这里,后续有进展再更,希望有大佬指导一下,希望有过类似项目经验的大佬指导,也欢迎类似需求的同道?道友?共同交流进步

新增功能因为是复合主键的原因,需要进行数据校验,我是用主键Map 进行查询校验的,详细的不放了 只放一个mapper吧,需要详细的,私信我,或者时间充足再更

    <!-- 新增、修改功能主键查询校验 -->
    <select id="getCount" parameterType="java.util.Map" resultType="Integer">  
		select count(*) count from ${keyMap.tblName} t 
		<where>
 	          <foreach item="key"  collection="keyMap.keycoluMap.keys" separator="and">
			       ${key} =  '${keyMap.keycoluMap[key]}'
			  </foreach>
 	   </where>
    </select>
    

修改跟新增差不太多 ,只是需要用主键Map查一遍数据库,然后把数据返回给页面,然后跟新增就差不多了,过...

修改的校验跟新增差不多 但是要麻烦一点,感觉我写的很臃肿 。。。

希望大佬能指导一下复合主键的修改校验。。。

删除就更简单了 对 也是不想写了 过...

很良心的贴上前台代码...

	//获取选中行数据
	$('#dataTable tbody').on( 'click', 'tr', function () {
		var check = $(this).find("input[type='checkbox']");
		$(this).toggleClass('selected');
        if ($(this).hasClass('selected')) {
            //$(this).removeClass('selected');
        	$(check).prop('checked', true);
        }else {
        	//dataTable.$('tr.selected').removeClass('selected');
            //$(this).addClass('selected');
            $(check).prop('checked', false);
        }
    });
 
    //修改按钮
	$("#editBtn").click(function(){
		var ztreeids = $("input:hidden[name='ztreeids']").val();
		var i = dataTable.rows('.selected').data().length
        //alert(i);
        if(i!=1){
			layer.msg('请选择一行数据!');
			return;
        }
		var param = {};
		param = dataTable.row('.selected').data();
		var sJson = JSON.stringify(param).replace(/\"/g,"'");

		var index = layer.open({
			  type: 2,
			  title: 0,
			  closeBtn: 0,
			  shadeClose: false,
			  maxmin: false,
			  area:['80%','80%'],
			  content: url,
			}); 
			layer.full(index);
	});
    
})

 	//删除按钮
	$("#delBtn").click(function(){
		var ztreeids = $("input:hidden[name='ztreeids']").val();
		var i = dataTable.rows('.selected').data().length;
		var param = {};
		var par = {};
		var dataArr = [];
		$(".selected").each(function(){
			par = dataTable.row(this).data();
			var sJson = JSON.stringify(par).replace(/\"/g,"'");
			dataArr.push(sJson);
		})
		param["dataArr"] = dataArr;
		
        //alert(i);
        //if(i!=1){
        if(i==0){
			layer.msg('请选择一行数据!');
			return;
        }else{
        	layer.confirm('你确定要删除所选记录吗?',{

				icon: 3
			},function(index){
				//确认
				layer.close(index);
				//param = dataTable.row('.selected').data();
				param["ztreeids"] = ztreeids;
				$.ajax({
					type: 'post' ,
		                        url:url,
					cache: false ,
					traditional :true,
					data: param,
					dataType:'json' ,
					success:function(){
						layer.close(index);
						layer.msg('记录删除成功!');
						dataTable.draw();
					},
					error:function(){
						layer.close(index);
						layer.alert('数据提交失败!',{icon: 5});
					}
				});
			}, function(index){
					//取消
					return;
			});

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值