1、tab打开后,再次点击左边菜单,tab不会刷新(猜测是由于tab的title相同引起)。
解决:
首先:tree中的onclick时间中添加addTab()方法
layout_west_tree = $('#layout_west_tree').tree({ url : '${path }/resource/tree', parentField : 'pid', lines : true, onClick : function(node) { var opts = { title : node.text, border : false, closable : true, fit : true, iconCls : node.iconCls }; var url = node.attributes; if (url && url.indexOf("http") == -1) { url = '${path }' + url; } if (node.openMode == 'iframe') { opts.content = '<iframe src="' + url + '" frameborder="0" style="border:0;width:100%;height:99.5%;"></iframe>'; addTab(opts); } else if (url) { opts.href = url; addTab(opts); } } });其次,编写addTab()方法,先关闭该tab,再重新打开此tab
function addTab(opts) { var t = $('#index_tabs'); if (t.tabs('exists', opts.title)) { //t.tabs('select', opts.title); t.tabs('close',opts.title) t.tabs('add', opts); } else { t.tabs('add', opts); } }存在问题:在有多个tab标签打开情况下,该tab显示的位置会移动到最后
2、easyUI combox 的onChange事件
<td><select id="typeCombo" class="easyui-combobox height 90" panelMinHeight="60px" name="typeCombo" style="width:90px"> <option value="0" selected>个人</option> <option value="1">一级部门</option> <option value="2">二级部门</option> </select></td> $("#typeCombo").combobox({ panelHeight:'40px', onChange: function (val) { mhSummaryDataGrid.datagrid('clearChecked');//清空上一页已选择的复选框 mhSummaryDataGrid.datagrid('options').queryParams = {};//清空上一页所带的参数 $("#nameTxt").textbox('setText', ""); switch(val){ case "0" : personalWorkHours(); break; case "1" : projectTeamWorkingHours(); break; case "2" : projectTeamTwoWorkingHours(); break; default : break; } } });3、easyUI 动态column
有一个需求,就是查出来的表的字段不唯一,一张表的字段可能是三个,也可能是五个,但是却要把它显示到页面
解决:通过array的push() 拼接出columns 属性的格式
function downloadManHours() { var selectedRows = mhSummaryDataGrid.datagrid('getChecked'); if (selectedRows.length == 0) { $.messager.alert('警告', '请至少选择一条记录!', 'error'); return; } var employeeNo = []; for (var i = 0; i < selectedRows.length; i++) { employeeNo.push("employeeNo[]=" + selectedRows[i].employeeNo); } window.open("manhoursummary/downloadExcel?" + employeeNo.join('&')); }4、easyUI checkbox 不可多选,设置属性 singleSelect : false
5、easyUI datagrid mhSummaryDataGrid.datagrid('getChecked');或mhSummaryDataGrid.datagrid('getSelections');只能获取到第一行的数据
原因:idField写错
网上说改为使用getChecked,idField写错无影响。但经测试,无论使用geChecked还是getSelections在idField写错情况下均获取不到所有所选择行的数据
6、easyUI 清除combox的选中状态
$("#dgList").datagrid('clearSelections').datagrid('clearChecked');
7、easyUI queryParams用法
mhSummaryDataGrid.datagrid('options').queryParams用法
用法一:
$('#dg').datagrid({ queryParams: { name: 'easyui', subject: 'datagrid' } });另一种用法:
var queryParams=$('#dg').datagrid('options').queryParam; queryParams.name = 'easyui'; queryParams.subject = 'datagrid'; $('#dg').datagrid('reload');8、easyUI 传参到后台乱码
parent.$.modalDialog({ title : '员工'+name+'的工时明细', width : 800, height : 500, href : '${path }/manhoursummary/morePage?name=' + name });以这种方式拼接name(中文字符时)到后台基本都会乱码 解决:A、eclipse编译环境全部改为UTF-8;项目编码,web.xml里所有关于编码的全部设置为UTF-8 Window->perenference->General->Content TypesB、基本不要用中文传递如name,使用字段类型不为中文的id等
9、easyUI 验证表单
<td>工号</td> <td><input name="employeeNo" type="text" placeholder="" class="easyui-validatebox span2" data-options="required:true,validType:'checkNum'" value=""></td> $(function() { $.extend($.fn.validatebox.defaults.rules,{checkNum: { validator: function(value, param) { return /^([0-9]+)$/.test(value); }, message: '请输入数字' } });10、在easyui的datagrid中,删除一条记录成功,重新加载datagrid后,还可以删除已经删除的id的相关记录
解决:应在删除数据成功后且重新加载datagrid前清空selections
personInfoDataGrid.datagrid('clearSelections');或personInfoDataGrid.datagrid('clearChecked');
function deleteInfo() { var selectedRows = personInfoDataGrid.datagrid("getSelections"); if (selectedRows.length == 0) { $.messager.alert('警告', '至少选择一条记录!', 'error'); return; } var id = []; for (var i = 0; i < selectedRows.length; i++) { id.push(selectedRows[i].id); } if (id.length != 0) { parent.$.messager.confirm('询问', '确认删除所选记录?', function(b) { if (b) { progressLoad(); $.post('${path }/personnelInformation/delete', { id : id }, function(result) { if (result.success) { parent.$.messager.alert('提示', result.msg, 'info'); personInfoDataGrid.datagrid('clearSelections'); personInfoDataGrid.datagrid('reload'); } progressClose(); }, 'JSON'); } }); } else { $.messager.alert('警告', '至少选择一条记录!', 'error'); personInfoDataGrid.datagrid('unselectAll').datagrid('uncheckAll'); } }11,验证用户名等是否输入重复
<td><input type="text" id="userName" name="userName" class="easyui-validatebox" validType="userName[6,30]" required="true"/></td> JS $.extend($.fn.validatebox.defaults.rules, { userName: { validator: function(value,param){ var data0 = false; if(value.length >= param[0] && param[1] >= value.length) { $.ajax({ type: "POST",async:false, url:'${pageContext.request.contextPath}/user/validate.do', dataType:"json", data:{"userName":value}, async:false, success: function(data){ data0=data.valid; } }); }else{ param[2] = "请输入"+param[0]+"-"+param[1]+"位字符."; return false; } param[2] = "用户名称已存在."; return data0; }, message: "用户名称已存在." } });