Easyui点击展开多个View
来源:互联网 发布:python 超时重试 编辑:程序博客网 时间:2024/06/03 19:22
<style>
.dg-jeremyedit {
margin-left:10px;
color:#33507e;
cursor: pointer;
}
.adjus_div {
display:none;
}
.datagrid-cell datagrid-cell-c8-Id {
width:100px;
}
.datagrid-cell datagrid-cell-c29-DomainName {
min-width:200px;
}
.datagrid-view1 {
display:none;
}
.datebox {
width:100px!important;
}
.validatebox-text {
width:80px!important;
}
.line {
width:15px!important;
}
td[field="EffectiveDate"] .datagrid-cell{
overflow:visible;
}
</style>
<div id="adjus_step2" name="adjus" data-step="2" style="display: none;border: 0px solid #ccc;width: 96%;margin-left: 2%;margin-right: 2%;min-height: 425px;overflow: hidden;">
<div class="opcontrol" style="color: #314e75;">
<span style="margin-left: 20px;font-size: 13px;">人员查询</span>
<input id="keyword" maxlength="5" placeholder="请输入要搜索的内容...">
@*<i class="iconfont icon-sousuo"></i>*@
<button class="searchbtn" data-step="2">
搜索
</button>
<label class="i-import" onclick="Org_Exopt()"><i class="iconfont icon-daoru " style="margin-right:3px;"></i>导入</label>
<label class="i-export"><i class="iconfont icon-daochu" style="margin-right:3px;color:#33507e;"></i>导出</label>
</div>
<div class="adjus_div">
<table id="adjus_dg"></table>
</div>
</div>
<div id="TplDate" style="display:none;">
<select class="v-startDate" style="width:30px;">
</select>
<select class="v-endDate" style="width:30px;">
</select>
</div>
<script>
function marginJsonArray(des, src, override) {
if (src instanceof Array) {
for (var i = 0, len = src.length; i < len; i++)
marginJsonArray(des, src[i], override);
}
for (var i in src) {
if (override || !(i in des)) {
des[i] = src[i];
}
}
return des;
}
function StrFormat_(val_, row, index) {
if (!val_)
return "";
if (typeof (val_) == "boolean") {
if (val_)
return "是";
else
return "否";
}
if (typeof (val_) == "object")
console.log(val_);
if (typeof (val_) != "string") {
console.log(val_);
return;
}
if (val_.indexOf("/Date(") > -1) {
return GetFormatDateString(val_);
}
return val_;
}
var columns = [];//大行列
var columns1 = [];//小行用的列
function setDetailViewColumns() {
columns1 = [];
//隐藏
var noEditsFileds = ["StaffNo", "StaffName", "StaffPinyin", "CostCenter", "DateJoin", "OrgId", "OrgDescr", "PositionCode", "PositionDescr"];//不允许编辑列
if (StaffColumnsShow.length > 0) {
var key = "";
for (var item_ in StaffColumnsShow) {
key = StaffColumnsShow[item_];
if (noEditsFileds.indexOf(key.Value) >= 0)
continue;
columns1.push({
field: key.Value, title: key.Text, width: 150, align: 'center', editor: 'text', formatter: StrFormat_
});
}
columns1.unshift({
field: "StaffNo",
title: "员工编号",
width: 100,
align: 'center',
hidden:true
});
columns1.unshift({
field: "EffectiveDate",
title: "生效日期(月)",
width: 150,
align: 'center',
//editor: 'text',
editor: { type: 'jeremydate', options: { paramField: "EffectiveDate" } },
formatter: function (value, row) {
return value;
}
});
columns1.unshift({
field: "Id", title: "操作", width: 80, align: 'center',//, hideColumn: false,
formatter: function (value, row, index) {
return '<span class="" onclick="singleSaveDetailView(this,' + index + ')" ><i class="iconfont icon-save "></i></span><span class="dg-jeremyedit" onclick="cancelEdit(this,' + index + ')"><i class="iconfont icon-guanbi "></i></span>';
}
});
}
}
var idsArray = {};//大行当前页数据(本地)
function load_adjus_dg(code_) {
if (!VersionInfo.PPtnCode) {
console.log("人员模型code为空");
return;
}
var StaffColumns_ = [];//加载自定列
if (StaffColumnsShow.length > 0) {
var key = "";
for (var item_ in StaffColumnsShow) {
key = StaffColumnsShow[item_];
StaffColumns_.push({
field: key.Value, title: key.Text, width: 120, align: 'center', formatter: StrFormat_
});
}
//StaffColumns_.unshift({
// field: "EffectiveDate",
// title: "生效日期(月)",
// width: 220,
// align: 'center',
// editor: 'EffectiveDate',
// //editor: { type: 'jeremydate', options: { paramField: "EffectiveDate" } },
// formatter: function (value, row) {
// return value;
// }
//});
StaffColumns_.unshift({
field: "Id", title: "操作列", width: 180, align: 'center',//, hideColumn: false,
formatter: function (value, row, index) {
return '<span class="dg-jeremyedit" onclick="singleAdd(this,' + index + ')" >添加变动计划</span>';//<span class="dg-jeremyedit" onclick="cancelEdit(this,' + index + ')">删除-</span>';
}
});
}
$(".adjus_div").show();
$('#adjus_dg').datagrid({
url: "@Url.Action("GetAdjus", "BudVersion")",
queryParams: { 'ProjCode': VersionInfo.ProjCode, VCode: VersionInfo.VCode },
method: 'POST',
idField: 'Id',
iconCls: 'icon-edit',
singleSelect: true,//必须为false
loadMsg: '数据正在加载,请耐心的等待...',
pagination: true,
pageSize: 10,
pageList: [5, 10, 15],
fitColumns: true,
//frozenColumns:[frozenColumns],//view1已被隐藏
columns: [StaffColumns_],
//onClickRow: onClickRow_adjus,
view: detailview,
detailFormatter: function (rowIndex, rowData) {
return '<table id="ddv' + rowIndex + '" data-staffno = "'+rowData.StaffNo+'"></table>';
},
onExpandRow: function (index, row) {
//展开DetailView
},
onUnselect: function (index, rowData) {
$("#adjus_dg").datagrid("endEdit", index);
},
onLoadSuccess: function (d) {
var rows_ = $(this).datagrid("getRows");
idsArray = {};
editIndex_detailview = {};
for (var i_ = 0; i_ < rows_.length; i_++) {
if (rows_[i_].StaffNo == undefined || rows_[i_].StaffNo == null)
continue;
idsArray[rows_[i_].StaffNo] = { "id": i_, "row": rows_[i_], "StaffNo": rows_[i_].StaffNo };
}
setDetailViewColumns();//detailview columns
ansyOpenView();
var dg = $(this);
var index = 2;
dg.datagrid('getExpander', index).hide();
if ($("#adjus_step2").find(".adjus_div").find(".datagrid-view2").eq(0).find(".datagrid-body").height() == 0) {
easyuiAutoWidth($("#adjus_dg"));
}
}
});
function bindEasyui(obj) {
obj = JSON.parse(obj);
$(obj.id).datagrid({
loadMsg: '数据正在加载,请耐心的等待...',
columns: [columns1],
onLoadSuccess: function (data) {
$(this).parents('tr').show();
$(this).parents('.datagrid-row-detail').css('margin-left', (document.body.clientWidth * 0.06).toFixed(2) + 'px').css('margin-right', (document.body.clientWidth * 0.06).toFixed(2) + 'px');
var w_ = (document.body.clientWidth * 0.8).toFixed(2);
w_ = w_ <= 600 ? 600 : w_;
$(this).datagrid('resize', { height: 110, width: w_ });
}
});
$(obj.id).datagrid('loading');
$(obj.id).datagrid('loadData', obj.data);
$(obj.id).datagrid('loaded');
}
var _st = window.setTimeout;
window.setTimeout = function (fRef, mDelay) {
if (typeof fRef == 'function') {
var argu = Array.prototype.slice.call(arguments, 2);
var f = (function () { fRef.apply(null, argu); });
return _st(f, mDelay);
}
return _st(fRef, mDelay);
}
function ansyOpenView() {
$.each(idsArray,function(key,value){
if(value.row.Children.length<=0)
return true;
var id_ = "#ddv" + value.id;
var tempRow = { "total": value.row.Children.length, "rows": value.row.Children };
window.setTimeout(bindEasyui, 100, JSON.stringify({ "id": id_, "data": tempRow }));
});
}
$.fn.datebox.defaults.formatter = function (date) {
var y = date.getFullYear();
var m = date.getMonth() + 1;
var d = date.getDate();
return y + '-' + m + '-' + d;
}
$.extend($.fn.datagrid.defaults.editors, {
disabled: {
init: function (container, options) {
//var row = $("#adjus_dg").datagrid("getSelected");
//if (row) {
// if (row && row.itemid == 'EST-15') {
// var ed2 = $('#dg').datagrid('getEditor', { 'index': editIndex, field: 'attr1' });
// $(ed2.target).attr("disabled", true);
// }
//}
},
destroy: function (target) {
$(target).remove();
},
getValue: function (target) {
return $(target).val();
},
setValue: function (target, value) {
$(target).val(value);
},
resize: function (target, width) {
$(target)._outerWidth(width);
}
},
jeremydate: {
init: function (container, options) {
var date1_ = PeriodList[0].replace(/(.{4})/g, '$1\-')
var date2_ = PeriodList[PeriodList.length - 1].replace(/(.{4})/g, '$1\-')
var input = [];
input.push($('<input class="startDate_effective easyui-datebox" type="text" />').appendTo(container));
input.push($("<span class='line'> - </span>").appendTo(container));
input.push($('<input class="endDate_effective easyui-datebox" type="text" />').appendTo(container));
input[0].datebox({
required: true,
onSelect: function (date) {},
current: new Date(date2_)
});
input[2].datebox({
required: true,
onSelect: function (date) { },
current: new Date(date1_)
});
return input;
},
destroy: function (target) {
$(target).remove();
},
getValue: function (target) {
return target[0].datebox('getValue') + " - " + target[2].datebox('getValue');
},
setValue: function (target, value) {
var startV_ ,endV_;
var arrts = value == null || value == undefined ? [] : value.split(',');
var isInitVal = false;
if (arrts.length == 0)
isInitVal = true;
if (isInitVal) {
startV_ = PeriodList[0].replace(/(.{4})/g, '$1\-');//PeriodList[0].slice(4, 6) + '/1/' + PeriodList[0].slice(0, 4);
endV_ = PeriodList[PeriodList.length-1].replace(/(.{4})/g, '$1\-');//PeriodList[arrts.length - 1].slice(4, 6) + '/1/' + PeriodList[arrts.length - 1].slice(0, 4);
} else {
startV_ = PeriodList[0].replace(/(.{4})/g, '$1\-');//arrts[0].slice(4, 6) + '/1/' + arrts[0].slice(0, 4);
endV_ = PeriodList[PeriodList.length - 1].replace(/(.{4})/g, '$1\-');//arrts[arrts.length - 1].slice(4, 6) + '/1/' + arrts[arrts.length - 1].slice(0, 4);
}
$(target)[0].datebox({//required: true,//onSelect: function (date) {},
value: startV_
});
$(target)[2].datebox({//required: true,onSelect: function (date) {},
value: endV_
});
console.log("startV_:" + startV_ + ",endV_" + endV_);
//$(target)[0].datebox('setValue', startV_);
//$(target)[2].datebox('setValue', endV_);
},
resize: function (target, width) {
$(target)._outerWidth(width);
}
}
});
}
//EasyUI行内编辑
var changeList = [];
var changeRowIndex = [];
var editIndex_adjus = undefined;
var editIndex_detailview = {};
function endEditing_adjus() {
if (editIndex_adjus == undefined) { return true }
if ($('#adjus_dg').datagrid('validateRow', editIndex_adjus)) {
//var ed = $('#adjus_dg').datagrid('getEditor', { index: editIndex_adjus, field: 'StaffNo' })
changeRowIndex.push(editIndex_adjus);
editIndex_adjus = undefined;
return true;
} else {
return false;
}
}
var singleSaveLog = {};//单选保存记录{staffno1,staffno2,...}
//大行 添加DetailView明细数据
function singleAdd(obj, index, row) {
//copy行到DetailView
var rowData = $("#adjus_dg").datagrid("getRows")[index];
//是否有DetailView
var detailViewObj = $(obj).parents('tr').next().find('.datagrid-row-detail');
var ynHide = $(obj).parents('tr').next().is(":hidden");
if (!(detailViewObj.length == 0)) {
//取Id
var id_ = "";
var tables = detailViewObj.find('table');
for (var i = 0; i <= tables.length; i++) {
if (!!$(tables[i]).attr('id') && $(tables[i]).attr('id').indexOf('ddv') > -1) {
id_ = $(tables[i]).attr('id');
break;
}
}
if (!id_) {
console.log("DetailView不存在");
return;
}
if (editIndex_detailview.hasOwnProperty("#" + id_)) {//有编辑行未处理
var r = confirm("检测到有未未完成编辑的行,是否放弃保存并继续?");
if (r == false) {
return;
}
$("#" + id_).datagrid("cancelEdit", editIndex_detailview["#" + id_]);//忽略编辑行状态时 取消行编辑
delete editIndex_detailview["#" + id_]; //删除编辑状态
}
if (rowData.hasOwnProperty("Children")) {
//rowData["Children"] = new Array();//在保存时报循环引用BUG
}
//$.each(rowData, function (key, val) {
// debugger;
//});
var rowData_ = {};
for (var filed_ in rowData) {
if (filed_ == "Children")
continue;
rowData_[filed_] = rowData[filed_];
}
if (ynHide) {
//当行隐藏时 要显示
$("#" + id_).datagrid({
loadMsg: '数据正在加载,请耐心的等待...',
columns: [columns1],
onLoadSuccess: function (data) {
$(this).parents('tr').show();
var w_ = (document.body.clientWidth * 0.8).toFixed(2);
w_ = w_ <= 600 ? 600 : w_;
$(this).datagrid('resize', { height: 110, width: w_ });
$(this).parents('.datagrid-row-detail').css('margin-left', (document.body.clientWidth * 0.06).toFixed(2) + 'px').css('margin-right', (document.body.clientWidth * 0.06).toFixed(2) + 'px');
$(this).datagrid("beginEdit", 0);
editIndex_detailview["#" + id_] = 0;//保存编辑状态
}
});
$("#" + id_).datagrid('loading');
$("#" + id_).datagrid('loadData', { "total": 1, "rows": [rowData_] });
$("#" + id_).datagrid('loaded');
return;
}
//操作DetailView
$("#" + id_).datagrid("appendRow", rowData_);
var editIndex_ = $("#" + id_).datagrid("getRowIndex", $("#" + id_).datagrid("getRows")[$("#" + id_).datagrid("getRows").length-1]);
$("#" + id_).datagrid("beginEdit", editIndex_);
editIndex_detailview["#" + id_] = editIndex_;//保存编辑状态
}
}
//DetailView 编辑与保存(变更数据必须同步到本地源idsArray数组)
function singleSaveDetailView(obj, index) {
//找出datagrid
var detailViewObj = $(obj).parents(".datagrid-row-detail");
if (!(detailViewObj.length == 0)) {
//取Id
var id_ = "";
var tables = detailViewObj.find('table');
for (var i = 0; i <= tables.length; i++) {
if (!!$(tables[i]).attr('id') && $(tables[i]).attr('id').indexOf('ddv') > -1) {
id_ = $(tables[i]).attr('id');
break;
}
}
if (!id_) {
console.log("DetailView不存在");
return;
}
var rowData = $("#" + id_).datagrid("getRows")[index];
//1.判断当前datagrid是否有正在编辑的行
// 1.1 有行编辑标识(检查编辑行与当前行是否是同一行,情况一相同时 保存并同步至服务器 情况二 不同时提示是否取消上个编辑行)
// 1.2 没有行编辑标识时 删除当前行
var isAnsyService = false;
if (editIndex_detailview.hasOwnProperty("#" + id_)) {
if (parseInt(editIndex_detailview["#" + id_]) == parseInt(index)) {
isAnsyService = true;//保存操作
} else {
var r = confirm("有未保存的行,是否继续?");
if (r == false) {
return;
}
$("#" + id_).datagrid("cancelEdit", editIndex_detailview["#" + id_]);//取消未完成编辑行的编辑状态
//编辑操作
editIndex_detailview["#" + id_] = index;
$("#" + id_).datagrid("beginEdit", index);
return;
}
} else {
//编辑操作
editIndex_detailview["#" + id_] = index;
$("#" + id_).datagrid("beginEdit", index);
return;
}
//同步至服务器 保存操作
if (isAnsyService) {
// 1.取大行数据
// 2. 将DetailView数据放入大行对象
var bigRowIndex = detailViewObj.parents('tr').prev("tr").attr("datagrid-row-index");//大行行号
var bigRowData = $("#adjus_dg").datagrid("getRows")[bigRowIndex];
console.log(index);
$("#" + id_).datagrid("endEdit", index);
$("#" + id_).datagrid("acceptChanges");
rowData = $("#" + id_).datagrid("getRows")[index];
idsArray[bigRowData.StaffNo].row.Children[index] = rowData;
var rows_ = $("#" + id_).datagrid("getRows");
var readyList = [];
var readyDetails = [];
for (var paramRowIndex in rows_) {
var item_ = rows_[paramRowIndex];
readyDetails.push({ "Period": item_.EffectiveDate, "StrInfo": rows_[paramRowIndex] });
}
readyList.push({ "StaffNo": bigRowData.StaffNo, "VerCode": VersionInfo.VCode, "DetailsStr": JSON.stringify(readyDetails)});
//拼Model
$.ajax({
cache: false,
async: false,
url: "/Budget/BudVersion/SaveAdjus",
type: "POST",
otherData: { "bigRowData": bigRowData, "div": "#" + id_ },
data: { ProCode: VersionInfo.ProjCode, VerCode: VersionInfo.VCode, 'details': JSON.stringify(readyList) },
dataType: "json",
success: function (data, status) {
$(this.otherData.div).datagrid('loading');
$(this.otherData.div).datagrid("loadData", { "total": idsArray[this.otherData.bigRowData.StaffNo].row.Children.length, "rows": idsArray[this.otherData.bigRowData.StaffNo].row.Children });//编辑行
$(this.otherData.div).datagrid('loaded');
$(this.otherData.div).datagrid("acceptChanges");
if (editIndex_detailview.hasOwnProperty(this.otherData.div))
delete editIndex_detailview[this.otherData.div];
if ($(this.otherData.div).datagrid('getRows').length <= 0) {
$(this.otherData.div).parents('tr').hide();
}
},
fail: function (status) {
console.log("失败");
}
});
}
//保存操作结束
}
}
//DetailView 取消编辑与删除(变更数据必须同步到本地源idsArray数组)
function cancelEdit(obj, index) {
//找出datagrid
var detailViewObj = $(obj).parents(".datagrid-row-detail");
if (!(detailViewObj.length == 0)) {
//取Id
var id_ = "";
var tables = detailViewObj.find('table');
for (var i = 0; i <= tables.length; i++) {
if (!!$(tables[i]).attr('id') && $(tables[i]).attr('id').indexOf('ddv') > -1) {
id_ = $(tables[i]).attr('id');
break;
}
}
if (!id_) {
console.log("DetailView不存在");
return;
}
var rowData = $("#" + id_).datagrid("getRows")[index];
//1.判断当前datagrid是否有正在编辑的行
// 1.1 有行编辑标识(检查编辑行与当前行是否是同一行,情况一相同时 取消当行编辑状态 情况二 不同时 删除当前行)
// 1.2 没有行编辑标识时 删除当前行
var isDelCurrent = false;
if (editIndex_detailview.hasOwnProperty("#" + id_)) {
if (parseInt(editIndex_detailview["#" + id_]) == parseInt(index)){
$("#" + id_).datagrid("cancelEdit", index);
delete editIndex_detailview["#" + id_];
return; //取消编辑操作 结束
} else{
isDelCurrent = true;
}
} else {
isDelCurrent = true;
}
if (isDelCurrent) {//删除当前行
var r = confirm("删除当前行?");
if (r == false) {
return;
}
//同步服务器
// 1.取大行数据
// 2. 将DetailView数据放入大行对象
var bigRowIndex = detailViewObj.parents('tr').prev("tr").attr("datagrid-row-index");//大行行号
var bigRowData = $("#adjus_dg").datagrid("getRows")[bigRowIndex];
//$("#" + id_).datagrid("deleteRow", index);//删除行
idsArray[bigRowData.StaffNo].row.Children.splice(index, 1);//刷新EasyUI Table 同步到本地
var rows_ = idsArray[bigRowData.StaffNo].row.Children;//$("#" + id_).datagrid("getRows");
var readyList = [];
var details = [];
for (var paramRowIndex in rows_) {
var item_ = rows_[paramRowIndex];
details.push({ "Period": item_.EffectiveDate, "StrInfo": rows_[paramRowIndex] });
}
readyList.push({ "StaffNo": bigRowData.StaffNo, "VerCode": VersionInfo.VCode, "DetailsStr": JSON.stringify(details) });
//拼Model
$.ajax({
cache: false,
async: false,
url: "/Budget/BudVersion/SaveAdjus",
type: "POST",
otherData: { "bigRowData": bigRowData, "div": "#" + id_ },
data: { ProCode: VersionInfo.ProjCode, VerCode: VersionInfo.VCode, 'details': JSON.stringify(readyList) },
dataType: "json",
success: function (data, status) {
$(this.otherData.div).datagrid('loading');
$(this.otherData.div).datagrid("loadData", { "total": idsArray[this.otherData.bigRowData.StaffNo].row.Children.length, "rows": idsArray[this.otherData.bigRowData.StaffNo].row.Children });//删除行
$(this.otherData.div).datagrid('loaded');
if (editIndex_detailview.hasOwnProperty(this.otherData.div))
delete editIndex_detailview[this.otherData.div];
if ($(this.otherData.div).datagrid('getRows').length <= 0) {
$(this.otherData.div).parents('tr').hide();
}
console.log("成功");
},
fail: function (status) {
console.log("失败");
}
});
//删除操作结束
}
}
}
//弹出导入框(变更人员)
function Org_Exopt() {
parent.layer.open({
area: ['600px', '180px'],
type: 1,
title: "导入",
shade: false,
area: ['785px', '650px'],
//content: "/Budget/BudVersion/Import?PPtnCode" + Version.PPtnCode,
closeBtn: 2,//如果是1的话关闭按钮会跟背景色一致导致看不到关闭按钮
btn: ["导入", "取消"],
btn1: function (index, layero) {
//加载数据
console.log("xx");
},
btn2: function (index, layero) {
parent.layer.close(index);
console.log("xx");
}
});
}
function UpLoad() {
if (test($("#FileExl").val()) == ".xls" || test($("#FileExl").val()) == ".xlsx") {
$("#ImportExl_Upload").ajaxSubmit({
url: "/BudVirtualOrgPattern/UpLoad",
type: "post",
success: function (data) {
if (data == "Success") {
parent.layer.confirm("上传成功,是否导入?", {
btn: ['确认', '取消'],//按钮
shade: false//不显示遮罩层
}, function (row) {
if ($("#FileExl").val() != "") {
$.ajax({
type: 'post',//提交方法
url: '/BudVirtualOrgPattern/CourseImport',//路径
data: {
fileName: $("#FileExl").val()
},
//成功产生的函数
success: function (data) {
parent.layer.alert(data.Message, { icon: 1 });
$("#Org_setting").datagrid("reload");
}
});
}
else {
parent.layer.alert("对路径的访问被拒绝。", { icon: 0 });
}
});
}
else if (data == "error") {
parent.layer.alert("上传失败", { icon: 0 });
} else {
parent.layer.alert("上传失败", { icon: 0 });
}
},
error: function (aa) {
parent.layer.alert(aa, { icon: 0 });
}
});
}
else {
parent.layer.alert("请上传excel类型的文件", { icon: 0 });
}
}
function myformatter(date) {
var y = date.getFullYear();
var m = date.getMonth() + 1;
var d = date.getDate();
return y + '-' + (m < 10 ? ('0' + m) : m);
}
function myparser(s) {
if (!s) return new Date();
var ss = (s.split('-'));
var y = parseInt(ss[0], 10);
var m = parseInt(ss[1], 10);
var d = parseInt(ss[2], 10);
if (!isNaN(y) && !isNaN(m) && !isNaN(d)) {
return new Date(y, m - 1, d);
} else {
return new Date();
}
}
</script>
.dg-jeremyedit {
margin-left:10px;
color:#33507e;
cursor: pointer;
}
.adjus_div {
display:none;
}
.datagrid-cell datagrid-cell-c8-Id {
width:100px;
}
.datagrid-cell datagrid-cell-c29-DomainName {
min-width:200px;
}
.datagrid-view1 {
display:none;
}
.datebox {
width:100px!important;
}
.validatebox-text {
width:80px!important;
}
.line {
width:15px!important;
}
td[field="EffectiveDate"] .datagrid-cell{
overflow:visible;
}
</style>
<div id="adjus_step2" name="adjus" data-step="2" style="display: none;border: 0px solid #ccc;width: 96%;margin-left: 2%;margin-right: 2%;min-height: 425px;overflow: hidden;">
<div class="opcontrol" style="color: #314e75;">
<span style="margin-left: 20px;font-size: 13px;">人员查询</span>
<input id="keyword" maxlength="5" placeholder="请输入要搜索的内容...">
@*<i class="iconfont icon-sousuo"></i>*@
<button class="searchbtn" data-step="2">
搜索
</button>
<label class="i-import" onclick="Org_Exopt()"><i class="iconfont icon-daoru " style="margin-right:3px;"></i>导入</label>
<label class="i-export"><i class="iconfont icon-daochu" style="margin-right:3px;color:#33507e;"></i>导出</label>
</div>
<div class="adjus_div">
<table id="adjus_dg"></table>
</div>
</div>
<div id="TplDate" style="display:none;">
<select class="v-startDate" style="width:30px;">
</select>
<select class="v-endDate" style="width:30px;">
</select>
</div>
<script>
function marginJsonArray(des, src, override) {
if (src instanceof Array) {
for (var i = 0, len = src.length; i < len; i++)
marginJsonArray(des, src[i], override);
}
for (var i in src) {
if (override || !(i in des)) {
des[i] = src[i];
}
}
return des;
}
function StrFormat_(val_, row, index) {
if (!val_)
return "";
if (typeof (val_) == "boolean") {
if (val_)
return "是";
else
return "否";
}
if (typeof (val_) == "object")
console.log(val_);
if (typeof (val_) != "string") {
console.log(val_);
return;
}
if (val_.indexOf("/Date(") > -1) {
return GetFormatDateString(val_);
}
return val_;
}
var columns = [];//大行列
var columns1 = [];//小行用的列
function setDetailViewColumns() {
columns1 = [];
//隐藏
var noEditsFileds = ["StaffNo", "StaffName", "StaffPinyin", "CostCenter", "DateJoin", "OrgId", "OrgDescr", "PositionCode", "PositionDescr"];//不允许编辑列
if (StaffColumnsShow.length > 0) {
var key = "";
for (var item_ in StaffColumnsShow) {
key = StaffColumnsShow[item_];
if (noEditsFileds.indexOf(key.Value) >= 0)
continue;
columns1.push({
field: key.Value, title: key.Text, width: 150, align: 'center', editor: 'text', formatter: StrFormat_
});
}
columns1.unshift({
field: "StaffNo",
title: "员工编号",
width: 100,
align: 'center',
hidden:true
});
columns1.unshift({
field: "EffectiveDate",
title: "生效日期(月)",
width: 150,
align: 'center',
//editor: 'text',
editor: { type: 'jeremydate', options: { paramField: "EffectiveDate" } },
formatter: function (value, row) {
return value;
}
});
columns1.unshift({
field: "Id", title: "操作", width: 80, align: 'center',//, hideColumn: false,
formatter: function (value, row, index) {
return '<span class="" onclick="singleSaveDetailView(this,' + index + ')" ><i class="iconfont icon-save "></i></span><span class="dg-jeremyedit" onclick="cancelEdit(this,' + index + ')"><i class="iconfont icon-guanbi "></i></span>';
}
});
}
}
var idsArray = {};//大行当前页数据(本地)
function load_adjus_dg(code_) {
if (!VersionInfo.PPtnCode) {
console.log("人员模型code为空");
return;
}
var StaffColumns_ = [];//加载自定列
if (StaffColumnsShow.length > 0) {
var key = "";
for (var item_ in StaffColumnsShow) {
key = StaffColumnsShow[item_];
StaffColumns_.push({
field: key.Value, title: key.Text, width: 120, align: 'center', formatter: StrFormat_
});
}
//StaffColumns_.unshift({
// field: "EffectiveDate",
// title: "生效日期(月)",
// width: 220,
// align: 'center',
// editor: 'EffectiveDate',
// //editor: { type: 'jeremydate', options: { paramField: "EffectiveDate" } },
// formatter: function (value, row) {
// return value;
// }
//});
StaffColumns_.unshift({
field: "Id", title: "操作列", width: 180, align: 'center',//, hideColumn: false,
formatter: function (value, row, index) {
return '<span class="dg-jeremyedit" onclick="singleAdd(this,' + index + ')" >添加变动计划</span>';//<span class="dg-jeremyedit" onclick="cancelEdit(this,' + index + ')">删除-</span>';
}
});
}
$(".adjus_div").show();
$('#adjus_dg').datagrid({
url: "@Url.Action("GetAdjus", "BudVersion")",
queryParams: { 'ProjCode': VersionInfo.ProjCode, VCode: VersionInfo.VCode },
method: 'POST',
idField: 'Id',
iconCls: 'icon-edit',
singleSelect: true,//必须为false
loadMsg: '数据正在加载,请耐心的等待...',
pagination: true,
pageSize: 10,
pageList: [5, 10, 15],
fitColumns: true,
//frozenColumns:[frozenColumns],//view1已被隐藏
columns: [StaffColumns_],
//onClickRow: onClickRow_adjus,
view: detailview,
detailFormatter: function (rowIndex, rowData) {
return '<table id="ddv' + rowIndex + '" data-staffno = "'+rowData.StaffNo+'"></table>';
},
onExpandRow: function (index, row) {
//展开DetailView
},
onUnselect: function (index, rowData) {
$("#adjus_dg").datagrid("endEdit", index);
},
onLoadSuccess: function (d) {
var rows_ = $(this).datagrid("getRows");
idsArray = {};
editIndex_detailview = {};
for (var i_ = 0; i_ < rows_.length; i_++) {
if (rows_[i_].StaffNo == undefined || rows_[i_].StaffNo == null)
continue;
idsArray[rows_[i_].StaffNo] = { "id": i_, "row": rows_[i_], "StaffNo": rows_[i_].StaffNo };
}
setDetailViewColumns();//detailview columns
ansyOpenView();
var dg = $(this);
var index = 2;
dg.datagrid('getExpander', index).hide();
if ($("#adjus_step2").find(".adjus_div").find(".datagrid-view2").eq(0).find(".datagrid-body").height() == 0) {
easyuiAutoWidth($("#adjus_dg"));
}
}
});
function bindEasyui(obj) {
obj = JSON.parse(obj);
$(obj.id).datagrid({
loadMsg: '数据正在加载,请耐心的等待...',
columns: [columns1],
onLoadSuccess: function (data) {
$(this).parents('tr').show();
$(this).parents('.datagrid-row-detail').css('margin-left', (document.body.clientWidth * 0.06).toFixed(2) + 'px').css('margin-right', (document.body.clientWidth * 0.06).toFixed(2) + 'px');
var w_ = (document.body.clientWidth * 0.8).toFixed(2);
w_ = w_ <= 600 ? 600 : w_;
$(this).datagrid('resize', { height: 110, width: w_ });
}
});
$(obj.id).datagrid('loading');
$(obj.id).datagrid('loadData', obj.data);
$(obj.id).datagrid('loaded');
}
var _st = window.setTimeout;
window.setTimeout = function (fRef, mDelay) {
if (typeof fRef == 'function') {
var argu = Array.prototype.slice.call(arguments, 2);
var f = (function () { fRef.apply(null, argu); });
return _st(f, mDelay);
}
return _st(fRef, mDelay);
}
function ansyOpenView() {
$.each(idsArray,function(key,value){
if(value.row.Children.length<=0)
return true;
var id_ = "#ddv" + value.id;
var tempRow = { "total": value.row.Children.length, "rows": value.row.Children };
window.setTimeout(bindEasyui, 100, JSON.stringify({ "id": id_, "data": tempRow }));
});
}
$.fn.datebox.defaults.formatter = function (date) {
var y = date.getFullYear();
var m = date.getMonth() + 1;
var d = date.getDate();
return y + '-' + m + '-' + d;
}
$.extend($.fn.datagrid.defaults.editors, {
disabled: {
init: function (container, options) {
//var row = $("#adjus_dg").datagrid("getSelected");
//if (row) {
// if (row && row.itemid == 'EST-15') {
// var ed2 = $('#dg').datagrid('getEditor', { 'index': editIndex, field: 'attr1' });
// $(ed2.target).attr("disabled", true);
// }
//}
},
destroy: function (target) {
$(target).remove();
},
getValue: function (target) {
return $(target).val();
},
setValue: function (target, value) {
$(target).val(value);
},
resize: function (target, width) {
$(target)._outerWidth(width);
}
},
jeremydate: {
init: function (container, options) {
var date1_ = PeriodList[0].replace(/(.{4})/g, '$1\-')
var date2_ = PeriodList[PeriodList.length - 1].replace(/(.{4})/g, '$1\-')
var input = [];
input.push($('<input class="startDate_effective easyui-datebox" type="text" />').appendTo(container));
input.push($("<span class='line'> - </span>").appendTo(container));
input.push($('<input class="endDate_effective easyui-datebox" type="text" />').appendTo(container));
input[0].datebox({
required: true,
onSelect: function (date) {},
current: new Date(date2_)
});
input[2].datebox({
required: true,
onSelect: function (date) { },
current: new Date(date1_)
});
return input;
},
destroy: function (target) {
$(target).remove();
},
getValue: function (target) {
return target[0].datebox('getValue') + " - " + target[2].datebox('getValue');
},
setValue: function (target, value) {
var startV_ ,endV_;
var arrts = value == null || value == undefined ? [] : value.split(',');
var isInitVal = false;
if (arrts.length == 0)
isInitVal = true;
if (isInitVal) {
startV_ = PeriodList[0].replace(/(.{4})/g, '$1\-');//PeriodList[0].slice(4, 6) + '/1/' + PeriodList[0].slice(0, 4);
endV_ = PeriodList[PeriodList.length-1].replace(/(.{4})/g, '$1\-');//PeriodList[arrts.length - 1].slice(4, 6) + '/1/' + PeriodList[arrts.length - 1].slice(0, 4);
} else {
startV_ = PeriodList[0].replace(/(.{4})/g, '$1\-');//arrts[0].slice(4, 6) + '/1/' + arrts[0].slice(0, 4);
endV_ = PeriodList[PeriodList.length - 1].replace(/(.{4})/g, '$1\-');//arrts[arrts.length - 1].slice(4, 6) + '/1/' + arrts[arrts.length - 1].slice(0, 4);
}
$(target)[0].datebox({//required: true,//onSelect: function (date) {},
value: startV_
});
$(target)[2].datebox({//required: true,onSelect: function (date) {},
value: endV_
});
console.log("startV_:" + startV_ + ",endV_" + endV_);
//$(target)[0].datebox('setValue', startV_);
//$(target)[2].datebox('setValue', endV_);
},
resize: function (target, width) {
$(target)._outerWidth(width);
}
}
});
}
//EasyUI行内编辑
var changeList = [];
var changeRowIndex = [];
var editIndex_adjus = undefined;
var editIndex_detailview = {};
function endEditing_adjus() {
if (editIndex_adjus == undefined) { return true }
if ($('#adjus_dg').datagrid('validateRow', editIndex_adjus)) {
//var ed = $('#adjus_dg').datagrid('getEditor', { index: editIndex_adjus, field: 'StaffNo' })
changeRowIndex.push(editIndex_adjus);
editIndex_adjus = undefined;
return true;
} else {
return false;
}
}
var singleSaveLog = {};//单选保存记录{staffno1,staffno2,...}
//大行 添加DetailView明细数据
function singleAdd(obj, index, row) {
//copy行到DetailView
var rowData = $("#adjus_dg").datagrid("getRows")[index];
//是否有DetailView
var detailViewObj = $(obj).parents('tr').next().find('.datagrid-row-detail');
var ynHide = $(obj).parents('tr').next().is(":hidden");
if (!(detailViewObj.length == 0)) {
//取Id
var id_ = "";
var tables = detailViewObj.find('table');
for (var i = 0; i <= tables.length; i++) {
if (!!$(tables[i]).attr('id') && $(tables[i]).attr('id').indexOf('ddv') > -1) {
id_ = $(tables[i]).attr('id');
break;
}
}
if (!id_) {
console.log("DetailView不存在");
return;
}
if (editIndex_detailview.hasOwnProperty("#" + id_)) {//有编辑行未处理
var r = confirm("检测到有未未完成编辑的行,是否放弃保存并继续?");
if (r == false) {
return;
}
$("#" + id_).datagrid("cancelEdit", editIndex_detailview["#" + id_]);//忽略编辑行状态时 取消行编辑
delete editIndex_detailview["#" + id_]; //删除编辑状态
}
if (rowData.hasOwnProperty("Children")) {
//rowData["Children"] = new Array();//在保存时报循环引用BUG
}
//$.each(rowData, function (key, val) {
// debugger;
//});
var rowData_ = {};
for (var filed_ in rowData) {
if (filed_ == "Children")
continue;
rowData_[filed_] = rowData[filed_];
}
if (ynHide) {
//当行隐藏时 要显示
$("#" + id_).datagrid({
loadMsg: '数据正在加载,请耐心的等待...',
columns: [columns1],
onLoadSuccess: function (data) {
$(this).parents('tr').show();
var w_ = (document.body.clientWidth * 0.8).toFixed(2);
w_ = w_ <= 600 ? 600 : w_;
$(this).datagrid('resize', { height: 110, width: w_ });
$(this).parents('.datagrid-row-detail').css('margin-left', (document.body.clientWidth * 0.06).toFixed(2) + 'px').css('margin-right', (document.body.clientWidth * 0.06).toFixed(2) + 'px');
$(this).datagrid("beginEdit", 0);
editIndex_detailview["#" + id_] = 0;//保存编辑状态
}
});
$("#" + id_).datagrid('loading');
$("#" + id_).datagrid('loadData', { "total": 1, "rows": [rowData_] });
$("#" + id_).datagrid('loaded');
return;
}
//操作DetailView
$("#" + id_).datagrid("appendRow", rowData_);
var editIndex_ = $("#" + id_).datagrid("getRowIndex", $("#" + id_).datagrid("getRows")[$("#" + id_).datagrid("getRows").length-1]);
$("#" + id_).datagrid("beginEdit", editIndex_);
editIndex_detailview["#" + id_] = editIndex_;//保存编辑状态
}
}
//DetailView 编辑与保存(变更数据必须同步到本地源idsArray数组)
function singleSaveDetailView(obj, index) {
//找出datagrid
var detailViewObj = $(obj).parents(".datagrid-row-detail");
if (!(detailViewObj.length == 0)) {
//取Id
var id_ = "";
var tables = detailViewObj.find('table');
for (var i = 0; i <= tables.length; i++) {
if (!!$(tables[i]).attr('id') && $(tables[i]).attr('id').indexOf('ddv') > -1) {
id_ = $(tables[i]).attr('id');
break;
}
}
if (!id_) {
console.log("DetailView不存在");
return;
}
var rowData = $("#" + id_).datagrid("getRows")[index];
//1.判断当前datagrid是否有正在编辑的行
// 1.1 有行编辑标识(检查编辑行与当前行是否是同一行,情况一相同时 保存并同步至服务器 情况二 不同时提示是否取消上个编辑行)
// 1.2 没有行编辑标识时 删除当前行
var isAnsyService = false;
if (editIndex_detailview.hasOwnProperty("#" + id_)) {
if (parseInt(editIndex_detailview["#" + id_]) == parseInt(index)) {
isAnsyService = true;//保存操作
} else {
var r = confirm("有未保存的行,是否继续?");
if (r == false) {
return;
}
$("#" + id_).datagrid("cancelEdit", editIndex_detailview["#" + id_]);//取消未完成编辑行的编辑状态
//编辑操作
editIndex_detailview["#" + id_] = index;
$("#" + id_).datagrid("beginEdit", index);
return;
}
} else {
//编辑操作
editIndex_detailview["#" + id_] = index;
$("#" + id_).datagrid("beginEdit", index);
return;
}
//同步至服务器 保存操作
if (isAnsyService) {
// 1.取大行数据
// 2. 将DetailView数据放入大行对象
var bigRowIndex = detailViewObj.parents('tr').prev("tr").attr("datagrid-row-index");//大行行号
var bigRowData = $("#adjus_dg").datagrid("getRows")[bigRowIndex];
console.log(index);
$("#" + id_).datagrid("endEdit", index);
$("#" + id_).datagrid("acceptChanges");
rowData = $("#" + id_).datagrid("getRows")[index];
idsArray[bigRowData.StaffNo].row.Children[index] = rowData;
var rows_ = $("#" + id_).datagrid("getRows");
var readyList = [];
var readyDetails = [];
for (var paramRowIndex in rows_) {
var item_ = rows_[paramRowIndex];
readyDetails.push({ "Period": item_.EffectiveDate, "StrInfo": rows_[paramRowIndex] });
}
readyList.push({ "StaffNo": bigRowData.StaffNo, "VerCode": VersionInfo.VCode, "DetailsStr": JSON.stringify(readyDetails)});
//拼Model
$.ajax({
cache: false,
async: false,
url: "/Budget/BudVersion/SaveAdjus",
type: "POST",
otherData: { "bigRowData": bigRowData, "div": "#" + id_ },
data: { ProCode: VersionInfo.ProjCode, VerCode: VersionInfo.VCode, 'details': JSON.stringify(readyList) },
dataType: "json",
success: function (data, status) {
$(this.otherData.div).datagrid('loading');
$(this.otherData.div).datagrid("loadData", { "total": idsArray[this.otherData.bigRowData.StaffNo].row.Children.length, "rows": idsArray[this.otherData.bigRowData.StaffNo].row.Children });//编辑行
$(this.otherData.div).datagrid('loaded');
$(this.otherData.div).datagrid("acceptChanges");
if (editIndex_detailview.hasOwnProperty(this.otherData.div))
delete editIndex_detailview[this.otherData.div];
if ($(this.otherData.div).datagrid('getRows').length <= 0) {
$(this.otherData.div).parents('tr').hide();
}
},
fail: function (status) {
console.log("失败");
}
});
}
//保存操作结束
}
}
//DetailView 取消编辑与删除(变更数据必须同步到本地源idsArray数组)
function cancelEdit(obj, index) {
//找出datagrid
var detailViewObj = $(obj).parents(".datagrid-row-detail");
if (!(detailViewObj.length == 0)) {
//取Id
var id_ = "";
var tables = detailViewObj.find('table');
for (var i = 0; i <= tables.length; i++) {
if (!!$(tables[i]).attr('id') && $(tables[i]).attr('id').indexOf('ddv') > -1) {
id_ = $(tables[i]).attr('id');
break;
}
}
if (!id_) {
console.log("DetailView不存在");
return;
}
var rowData = $("#" + id_).datagrid("getRows")[index];
//1.判断当前datagrid是否有正在编辑的行
// 1.1 有行编辑标识(检查编辑行与当前行是否是同一行,情况一相同时 取消当行编辑状态 情况二 不同时 删除当前行)
// 1.2 没有行编辑标识时 删除当前行
var isDelCurrent = false;
if (editIndex_detailview.hasOwnProperty("#" + id_)) {
if (parseInt(editIndex_detailview["#" + id_]) == parseInt(index)){
$("#" + id_).datagrid("cancelEdit", index);
delete editIndex_detailview["#" + id_];
return; //取消编辑操作 结束
} else{
isDelCurrent = true;
}
} else {
isDelCurrent = true;
}
if (isDelCurrent) {//删除当前行
var r = confirm("删除当前行?");
if (r == false) {
return;
}
//同步服务器
// 1.取大行数据
// 2. 将DetailView数据放入大行对象
var bigRowIndex = detailViewObj.parents('tr').prev("tr").attr("datagrid-row-index");//大行行号
var bigRowData = $("#adjus_dg").datagrid("getRows")[bigRowIndex];
//$("#" + id_).datagrid("deleteRow", index);//删除行
idsArray[bigRowData.StaffNo].row.Children.splice(index, 1);//刷新EasyUI Table 同步到本地
var rows_ = idsArray[bigRowData.StaffNo].row.Children;//$("#" + id_).datagrid("getRows");
var readyList = [];
var details = [];
for (var paramRowIndex in rows_) {
var item_ = rows_[paramRowIndex];
details.push({ "Period": item_.EffectiveDate, "StrInfo": rows_[paramRowIndex] });
}
readyList.push({ "StaffNo": bigRowData.StaffNo, "VerCode": VersionInfo.VCode, "DetailsStr": JSON.stringify(details) });
//拼Model
$.ajax({
cache: false,
async: false,
url: "/Budget/BudVersion/SaveAdjus",
type: "POST",
otherData: { "bigRowData": bigRowData, "div": "#" + id_ },
data: { ProCode: VersionInfo.ProjCode, VerCode: VersionInfo.VCode, 'details': JSON.stringify(readyList) },
dataType: "json",
success: function (data, status) {
$(this.otherData.div).datagrid('loading');
$(this.otherData.div).datagrid("loadData", { "total": idsArray[this.otherData.bigRowData.StaffNo].row.Children.length, "rows": idsArray[this.otherData.bigRowData.StaffNo].row.Children });//删除行
$(this.otherData.div).datagrid('loaded');
if (editIndex_detailview.hasOwnProperty(this.otherData.div))
delete editIndex_detailview[this.otherData.div];
if ($(this.otherData.div).datagrid('getRows').length <= 0) {
$(this.otherData.div).parents('tr').hide();
}
console.log("成功");
},
fail: function (status) {
console.log("失败");
}
});
//删除操作结束
}
}
}
//弹出导入框(变更人员)
function Org_Exopt() {
parent.layer.open({
area: ['600px', '180px'],
type: 1,
title: "导入",
shade: false,
area: ['785px', '650px'],
//content: "/Budget/BudVersion/Import?PPtnCode" + Version.PPtnCode,
closeBtn: 2,//如果是1的话关闭按钮会跟背景色一致导致看不到关闭按钮
btn: ["导入", "取消"],
btn1: function (index, layero) {
//加载数据
console.log("xx");
},
btn2: function (index, layero) {
parent.layer.close(index);
console.log("xx");
}
});
}
function UpLoad() {
if (test($("#FileExl").val()) == ".xls" || test($("#FileExl").val()) == ".xlsx") {
$("#ImportExl_Upload").ajaxSubmit({
url: "/BudVirtualOrgPattern/UpLoad",
type: "post",
success: function (data) {
if (data == "Success") {
parent.layer.confirm("上传成功,是否导入?", {
btn: ['确认', '取消'],//按钮
shade: false//不显示遮罩层
}, function (row) {
if ($("#FileExl").val() != "") {
$.ajax({
type: 'post',//提交方法
url: '/BudVirtualOrgPattern/CourseImport',//路径
data: {
fileName: $("#FileExl").val()
},
//成功产生的函数
success: function (data) {
parent.layer.alert(data.Message, { icon: 1 });
$("#Org_setting").datagrid("reload");
}
});
}
else {
parent.layer.alert("对路径的访问被拒绝。", { icon: 0 });
}
});
}
else if (data == "error") {
parent.layer.alert("上传失败", { icon: 0 });
} else {
parent.layer.alert("上传失败", { icon: 0 });
}
},
error: function (aa) {
parent.layer.alert(aa, { icon: 0 });
}
});
}
else {
parent.layer.alert("请上传excel类型的文件", { icon: 0 });
}
}
function myformatter(date) {
var y = date.getFullYear();
var m = date.getMonth() + 1;
var d = date.getDate();
return y + '-' + (m < 10 ? ('0' + m) : m);
}
function myparser(s) {
if (!s) return new Date();
var ss = (s.split('-'));
var y = parseInt(ss[0], 10);
var m = parseInt(ss[1], 10);
var d = parseInt(ss[2], 10);
if (!isNaN(y) && !isNaN(m) && !isNaN(d)) {
return new Date(y, m - 1, d);
} else {
return new Date();
}
}
</script>
0 0
- Easyui点击展开多个View
- Easyui tree 点击展开收缩
- Android ListView点击Item展开隐藏项,单个展开,多个展开
- easyUI tree点击文字展开节点
- easyUI tree点击文字展开节点
- easyUI tree点击文字展开节点
- easyui 点击文字展开和收缩节点
- Easyui-datagrid groupview 点击行展开
- EasyUI tree 实现点击展开/折叠
- 点击多个view 避免同时产生多个响应
- 点击ListView的item展开隐藏的view
- 点击展开
- 平移动画,点击某个控件让一个view收缩到右边屏幕,再点击展开。
- easyui 的行展开
- 【easyui】tree双击展开
- 如果写一个点击view带动画的下滑展开显示隐藏内容的控件
- 如何写一个点击view带动画的下滑展开显示隐藏内容的控件
- 自定义View常用例子二(点击展开隐藏控件,九宫格图片控件)
- c++上机报告
- Java线程(篇外篇):阻塞队列BlockingQueue
- 指针和const限定
- sed 使用命令
- 点击网页上的手机号码直接拨打电话(针对手机端)
- Easyui点击展开多个View
- 300. Longest Increasing Subsequence
- caffe python net_spec/使用
- Hadoop学习笔记系列文章导航
- JSP页面访问MySQL数据库(1)
- iOS9 WKWebView清除缓存方法
- oracle-- 文字与格式字符串不匹配
- 怎么赚积分
- spring声明式事务 同一类内方法调用事务失效