easyui使用detailview创建子网格数据

效果图(网上copy的图片,使用方法请关注下方):

在这里插入图片描述

使用方法:
html页面除了基本的css和js外,创建分组子网格还需引入下方js,请自行下载。

		<script type="text/javascript" src="../../easyui/datagrid-detailview.js"></script>

首先,在html页面创建table,table的class为 class=“easyui-datagrid”,此处略。
其次,使用js创建子网格数据(detailview)

$(function(){
	$('#broTable').datagrid({
		view: detailview,
		detailFormatter:function(index,row){
			return '<div style="padding:1px"><table id="ddv" class="ddv"></table></div>';
		},
		onExpandRow: function(index,row){
			var ddv = $(this).datagrid('getRowDetail',index).find('table.ddv');
			var tempindexc = -1;
			var editIndex;	//上一个index
			var ddvProgram; //单击选中单条数据
			var bro = $("#broDate").datebox("getValue");
			id = row.id;
     		var sysDate = new Date();
    		var date = sysDate.getDate();
    		if (date >= 0 && date <= 9) {
    			date = "0" + date;
    		}
    		var b = sysDate.getFullYear()+"-"+(sysDate.getMonth()+1)+"-"+date;
			if(bro == null || bro == "选择日期或查询"){
				bro = sysDate.getFullYear()+"-"+(sysDate.getMonth()+1)+"-"+date;
			}
		    var rows = $('#broTable').datagrid('getRows');
		    $.each(rows,function(i,k){
		        //获取当前所有展开的子网格
		        var expander = $('#broTable').datagrid('getExpander',i);
		        if(expander.length && expander.hasClass('datagrid-row-collapse')){
		            if(k.id != row.id){
		                //折叠上一次展开的子网格
		                $('#broTable').datagrid('collapseRow',i);
		            }
		        }
		    });
			ddv.datagrid({
				url:'anchProgramAction!selectAll.action?broDate='+bro.toString()+'&channelId='+row.id,
				fitColumns:true,
				singleSelect:true,
				rownumbers:true,
				loadMsg:'正在加载...',
				height:'auto',
				columns:[[
						{field:'srName',title:'素材名称',width:230,align:'center'},
						{field:'srTimes',title:'视频时长',width:100,align:'center'},
						{field:'srSize',title:'视频大小',width:100,align:'center'},
						{field:'srWidth',title:'视频尺寸',width:100,align:'center'},
						{field:'broDate',title:'播出时间',width:180,align:'center'},
						{field:'beginDate',title:'视频起始时间',width:180,align:'center',
							editor:{type:'timespinner',options:{required : true, editable:false, showSeconds:true}},
							formatter:function formatDateStr(value,rowData,index){
								if(value.split("T").length>1){
									value = value.split("T")[1];
								}
								return value;
								}
							},
						{field:'endDate',title:'视频结束时间',width:180,align:'center',
							editor:{type:'timespinner',options:{required :true , editable:false,showSeconds:true}},
							formatter:function formatDateStr(value,rowData,index){
								if(value.split("T").length>1){
									value = value.split("T")[1];
								}
								return value;
							}
						},
						{field:'broTimes',title:'编辑后时长',width:130,align:'center'},
				]],
				onResize:function(){
					$('#broTable').datagrid('fixDetailRowHeight',index);//在加载成功时,获取父列表的明细高度,使其适应明显点开后的高度
				},
				onLoadSuccess:function(data){
					setTimeout(function(){
						$('#broTable').datagrid('fixDetailRowHeight',index);//在加载父列表明细成功时,获取此时整个列表的高度,使其适应变化后的高度,此时的索引
					});
				},
				onCheck:function(rowIndex,rowData){
					tData = ddv.datagrid('getData');
					tempindexc = rowIndex;
					ddvProgram = rowData;
				},
				toolbar:[
				         {
				        	id:'saveId',
				        	text:'保存',
				        	iconCls:'icon-save',
				        	handler:function(){
				        	 	if(b > bro){
				        	 		$.messager.alert("提示","小于今天日期禁止保存!","info");
				        	 	}else{
			        	 			$.messager.confirm("提示", "确定保存数据?", function(r){
			        	 				if(r){
			        	 					if (ddv.datagrid('validateRow', tempindexc)){
			        	 						ddv.datagrid('endEdit', editIndex);
			        	 						if(ddvCheckDateTime()){
			        	 							var json = JSON.stringify(ddv.datagrid("getData").rows);
			        	 							saveEditBroplan(json, row.id);
			        	 							editIndex = undefined;  
			        	 						}else{
			        	 							ddv.datagrid('selectRow', editIndex).datagrid('beginEdit', editIndex);
			        	 							return false;
			        	 						}
			        	 					}
			        	 				}
			        	 			});
				        	 	}
							    function ddvCheckDateTime(){
							    	var r = ddv.datagrid("getRows")[editIndex];
							    	oldChannelData = r;
							    	if(r == undefined){
							        	var json = JSON.stringify(ddv.datagrid("getData").rows);
							        	saveEditBroplan(json, row.id);
							        	editIndex = undefined;  
//							        	$('#saveId').linkbutton("disable");  //禁止button
							    	}else{
							    		var beginTime = ddvFormatTime(r.beginDate);
							    		var endTime = ddvFormatTime(r.endDate);
							    		var time = ddvFormatTime(r.srTimes);
							    		if(endTime>time){
							    			$.messager.alert("提示","结束播放时间超出素材总时长!","info");
							    			return false;
							    		}
							    		if((endTime-beginTime)==0){
							    			$.messager.alert("提示","素材播放时长必须大于0秒!","info");
							    			return false;
							    		}
							    		if(beginTime>time){
							    			$.messager.alert("提示","开始播放时间超出素材总时长!","info");
							    			return false;
							    		}
							    		r.broTimes = ddvFormatSeconds(endTime-beginTime);
							    		var broRows = ddv.datagrid("getRows");
							    		var all = {'total':0,'rows':[]};
							    		all.rows = ddvFormatRows(broRows);
							    		ddv.datagrid("loadData",all);
							    		changedDate = all.rows;
							    		return true;
							    	}
							    }
				         	}
				         },
				         {
				        	 id:'addId',
				        	 text:'添加',
				        	 iconCls:'icon-add',
				        	 handler:function(){
				        	 	if(b > bro){
				        	 		$.messager.alert("提示","小于今天日期禁止添加!","info");
				        	 	}else{
				        	 		$('#add_tbb').dialog({
				        	 			width:1000,
				        	 			height:500,
				        	 			title:"添加",
				        	 			iconCls:"icon-add",
				        	 			href:"safetyCkList.html",
				        	 		});
				        	 		selectChannel(row);
				        	 	}
				         	}
				         },
				         {
				        	 id:'deleteId',
				        	 text:'删除',
				        	 iconCls:'icon-remove',
				        	 handler:function(){
				        	 	if(b > bro){
				        	 		$.messager.alert("提示","小于今天日期禁止删除!","info");
				        	 	}else{
				        	 		if(ddvProgram != null){
				        	 			$.messager.confirm("提示", "确定删除吗?", function(r){
				        	 				if(r){
				        	 					var rows = ddv.datagrid("getRows");
				        	 					if(tempindexc == 0){
//				        	 						if(rows.length == 1){
//				        	 							rows.splice(tempindexc,1);
//				        	 						}else{
				        	 							rows.splice(tempindexc,1);
//				        	 							rows[0].broDate = ddvProgram.broDate;
				        	 							oldChannelData = ddvProgram;
//				        	 						}
				        	 						var ddvData = JSON.stringify(ddv.datagrid("getData").rows);
				        	 						deleteRow(ddvProgram,ddvData,row.id);
				        	 					}else{
				        	 						rows.splice(tempindexc,1);
				        	 						oldChannelData = ddvProgram;
				        	 						var ddvData = JSON.stringify(ddv.datagrid("getData").rows);
				        	 						deleteRow(ddvProgram,ddvData,row.id);
				        	 					}
				        	 					var all = {'total':0,'rows':[]};
				        	 					all.rows = ddvFormatRows(rows);
				        	 					ddv.datagrid("loadData",all);
				        	 					changedDate = all.rows;
				        	 					ddvProgram = null;
				        	 				}
				        	 			});
				        	 		}else{
				        	 			$.messager.alert("提示", "请选择数据!", "info");
				        	 		}
				        	 	}
					         }
				         },
				         {
				        	 text:'预览',
				        	 iconCls:'icon-reload',
				        	 handler:function(){
				        	 	if(ddvProgram == null){
				        	 		$.messager.alert("提示", "请选择数据!", "info");
				        	 	}else{
				        	 		showVideo(ddvProgram);
				        	 	}
				        	 }
				         },
				         {
				        	 text:'上移',
				        	 iconCls: 'icon-undo',
				        	 handler:function(){
				        	 	if(b > bro){
				        	 		$.messager.alert("提示","小于今天日期禁止移动!","info");
				        	 	}else{
				        	 		          if (isEdite == false) {
				        	 			              var data = tData;
				        	 			              if (tempindexc < 0) {
				        	 				                  $.messager.alert("错误", "请先选择一条数据!", "error");
				        	 				              } else if (tempindexc == 0) {
				        	 					                  $.messager.alert("提示", "已经是第一行了!", "info");
				        	 					              } else {
				        	 						                  var temprow = data.rows[tempindexc];
				        	 						                  data.rows[tempindexc] = data.rows[parseInt(tempindexc) - 1];
				        	 						                  data.rows[parseInt(tempindexc) - 1] = temprow;
				        	 						                  var temprowval = data.rows[tempindexc].OrderList;
				        	 						                  data.rows[parseInt(tempindexc)].OrderList = data.rows[parseInt(tempindexc) - 1].OrderList;
				        	 						                  data.rows[parseInt(tempindexc) - 1].OrderList = temprowval;
				        	 						                  ddv.datagrid("selectRow", parseInt(tempindexc) - 1);
								        	 						//得到移动数据的上一条编辑后时长
								        	 						oldChannelData = temprow;
								        	 						var all = {'total':0,'rows':[]};
								        	 						var state = "undo";
								        	 						all.rows = ddvFormat(data.rows,state);
								        	 						ddv.datagrid("loadData",all);
								        	 						changedDate = all.rows;
				        	 						              }
				        	 			          }
				        	 		          else {
				        	 			              $.messager.alert("错误", "请先保存数据!", "error");
				        	 			          }
				        	 	}
				        	 
				         }
				         },
				         {
				        	 text:'下移',
				        	 iconCls: 'icon-redo',
				        	 handler:function(){
				        	 	if(b > bro){
				        	 		$.messager.alert("提示","小于今天日期禁止移动!","info");
				        	 	}else{
		        	 		          if (isEdite == false) {
		        	 			              var data = tData;
		        	 			              if (tempindexc < 0) {
		        	 				                  $.messager.alert("错误", "请先选择一条数据!", "error");
		        	 				              } else if (tempindexc == data.rows.length - 1) {
		        	 					                  $.messager.alert("提示", "已经是最后一行了!", "info");
		        	 					              } else {
		        	 						                  var temprow = data.rows[tempindexc];
		        	 						                  // 移动行的索引 加1
		        	 						                  data.rows[tempindexc] = data.rows[parseInt(tempindexc) + 1];
		        	 						                  data.rows[parseInt(tempindexc) + 1] = temprow;
		        	 						                  var temprowval = data.rows[tempindexc].OrderList;
		        	 						                  data.rows[parseInt(tempindexc)].OrderList = data.rows[parseInt(tempindexc) + 1].OrderList;
		        	 						                  data.rows[parseInt(tempindexc) + 1].OrderList = temprowval;
		        	 						                  ddv.datagrid("selectRow", parseInt(tempindexc) + 1);
						        	 						oldChannelData = temprow;
						        	 						var all = {'total':0,'rows':[]};
						        	 						var state = "redo";
						        	 						all.rows = ddvFormatUp(data.rows,state);
						        	 						ddv.datagrid("loadData",all);
						        	 						changedDate = all.rows;
		        	 						              }
		        	 			          }
		        	 		          else {
		        	 			              $.messager.alert("错误", "请先保存数据!", "error");
		        	 			          }
				        	 	}
			         
			         }
			         },
			         {
			        	 id:'edit',
			        	 text:'编辑',
			        	 iconCls:'icon-edit',
			        	 handler:function(){
			        	 	if(b > bro){
			        	 		$.messager.alert("提示","小于今天日期禁止编辑!","info");
			        	 	}else{
			        	 		if (editIndex != tempindexc){  
			        	 			if (ddvEndEditing()){
			        	 				ddv.datagrid('beginEdit', tempindexc);
			        	 				var v = ddv.datagrid('selectRow', tempindexc).datagrid('beginEdit', tempindexc);  
			        	 				editIndex = tempindexc; 
			        	 			} else {  
//							        	ddv.datagrid('beginEdit', rowIndex);
			        	 				ddv.datagrid('selectRow', editIndex);  
			        	 			}  
			        	 		}
			        	 	}
						    function ddvEndEditing(){  
						    	if (editIndex == undefined){return true} 
						    	if (ddv.datagrid('validateRow', editIndex)){
						            ddv.datagrid('endEdit', editIndex);
						            if(ddvCheckDateTime()){
						            	editIndex = undefined;  
						    	        return true;
						            }else{
						            	ddv.datagrid('selectRow', editIndex).datagrid('beginEdit', editIndex);
						            	return false;
						            }
						        } else {  
						            return false;  
						        }  
						    }
						    function ddvCheckDateTime(){
						    	var row = ddv.datagrid("getRows")[editIndex];
						    	oldChannelData = row;
						    	var beginTime = ddvFormatTime(row.beginDate);
						    	var endTime = ddvFormatTime(row.endDate);
						    	var time = ddvFormatTime(row.srTimes);
						    	if(endTime>time){
						    		$.messager.alert("提示","结束播放时间超出素材总时长!","info");
						    		return false;
						    	}
						    	if((endTime-beginTime)==0){
						    		$.messager.alert("提示","素材播放时长必须大于0秒!","info");
						    		return false;
						    	}
						    	if(beginTime>time){
						    		$.messager.alert("提示","开始播放时间超出素材总时长!","info");
						    		return false;
						    	}
						    	row.broTimes = ddvFormatSeconds(endTime-beginTime);
						    	var broRows = ddv.datagrid("getRows");
						    	var all = {'total':0,'rows':[]};
						    	all.rows = ddvFormatRows(broRows);
						    	ddv.datagrid("loadData",all);
						    	changedDate = all.rows;
						    	return true;
						    }
			         	}
			         }]
		});
		$('#broTable').datagrid('fixDetailRowHeight',index);
	}		
});
});

function ddvFormatRows(rows){
	var beginTime = oldChannelData.beginDate;//获取修改的播放时间
	for ( var i = 0; i < rows.length; i++) {//循环数据,根据天分割来修改时间
		var date;
		if(i == 0){
			date = rows[i].broDate.substring(11);
			rows[i].broDate = rows[i].broDate;
		}else{
			if(rows[i].broDate.substring(0,11) == rows[i-1].broDate.substring(0,11)){
				date = rows[i-1].broDate.substring(11);
				rows[i].broDate =  rows[i-1].broDate.substring(0,11) +" "+ddvCountBeginTime(date,rows[i-1].broTimes);//将时间(时分秒)传入并修改,方法如下
			}else{
				break;
			}
		}
	}
	return rows;
}
function ddvFormat(rows,state){
	var beginTime = oldChannelData.beginDate;//获取修改的播放时间
	if(beginTime.indexOf("T") != -1){
		beginTime = beginTime.substring(11);
	}
	for ( var i = 0; i < rows.length; i++) {//循环数据,根据天分割来修改时间
		var date;
		if(i == 0){
			if(rows[i].id == oldChannelData.id){
				if(state == "redo"){
					rows[i].broDate = rows[i].broDate;
				}else{
				date = rows[i].broDate.substring(11);
				rows[i].broDate = rows[i + 1].broDate;
				}
			}else{
				if(state == "redo"){
					rows[i].broDate = rows[i].broDate;
				}else{
					rows[i].broDate = rows[i].broDate;
				}
				
			}
		}else{
			if(rows[i].broDate.substring(0,11) == rows[i-1].broDate.substring(0,11)){
				date = rows[i-1].broDate.substring(11);
				rows[i].broDate =  rows[i-1].broDate.substring(0,11) +" "+ddvCountBeginTime(date,rows[i-1].broTimes);//将时间(时分秒)传入并修改,方法如下
			}else{
				continue;
			}
		}
	}
	return rows;
}
function ddvFormatUp(rows,state){
	var beginTime = oldChannelData.beginDate;//获取修改的播放时间
	if(beginTime.indexOf("T") != -1){
		beginTime = beginTime.substring(11);
	}
	for ( var i = 0; i < rows.length; i++) {//循环数据,根据天分割来修改时间
		var date;
		if(i == 0){
			if(rows[i+1].id == oldChannelData.id){
				if(state == "redo"){
					rows[i].broDate = rows[i + 1].broDate;
				}else{
					date = rows[i].broDate.substring(11);
					rows[i].broDate = rows[i + 1].broDate;
				}
			}else{
				if(state == "redo"){
					rows[i].broDate = rows[i].broDate;
				}else{
					rows[i].broDate = rows[i].broDate;
				}
				
			} 
		}else{
			if(rows[i].broDate.substring(0,11) == rows[i-1].broDate.substring(0,11)){
				date = rows[i-1].broDate.substring(11);
				rows[i].broDate =  rows[i-1].broDate.substring(0,11) +" "+ddvCountBeginTime(date,rows[i-1].broTimes);//将时间(时分秒)传入并修改,方法如下
			}else{
				continue;
			}
		}
	}
	return rows;
}
function ddvCountBeginTime(beginTime,length){
	var broDate =  parseInt(ddvFormatTime(beginTime) + ddvFormatTime(length));
	return ddvFormatSeconds(broDate);//时间转换
}
function ddvFormatTime(time){
	var timeArr = time.split(":");
	var hh = 0;
	var mi = 0;
	var ss = parseInt(timeArr[eval(timeArr.length-1)]);
	var seconds = 0;
	if(timeArr.length==3){
		hh = parseInt(timeArr[0]*60*60);
		mi = parseInt(timeArr[1]*60);
	}
	if(timeArr.length==2){
		mi = parseInt(timeArr[0]*60);
	}
	seconds = parseInt(hh + mi + ss);
	return seconds;
}
function ddvFormatSeconds(seconds){
	var theTime = 0;
	theTime = parseInt(seconds);// 秒
   var theTime1 = 0;// 分
   var theTime2 = 0;// 小时
   if(theTime > 60) {
      theTime1 = parseInt(theTime/60);
      theTime = parseInt(theTime%60);
      if(theTime1 > 60) {
         theTime2 = parseInt(theTime1/60);
         theTime1 = parseInt(theTime1%60);
       }
   }
   var result;
   result = (parseInt(theTime2)<10?"0"+theTime2:theTime2)+":"+(parseInt(theTime1)<10?"0"+theTime1:theTime1)+":"+(parseInt(theTime)<10?"0"+theTime:theTime);
   return result;
}
function selects(b){
	$.post('anchChannelAction!selectAsList.action?t='+new Date(),{broDate:b},function(data){
		eval("data="+data);
		$("#broTable").datagrid("loadData",data["rows"]);
	});
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值