DataGrid
①进度条
//进度条自定义样式
//进度列 使用renderer渲染
②表格翻页保持选中并获取选中
整合步骤
1.// 设置表格在翻页时记住选中状态
datagrid.setHoldSelectedStatus(true);
2.var rows = datagrid.getAllSelecteds();获取选中
③列表显示图片
后端查询到该条数据的附件信息,前端进行渲染
前端:
style=”height: 100%;” allowResize=”false” multiSelect=”true” allowCellEdit=”true” allowCellSelect=”true”
editNextOnEnterKey=”true” editNextRowCell=”true” allowCellWrap=”true”>
//渲染列表图标
function onIconAttachRenderer(e) {
var attachHtml = “
- “;
if (e.row.attachlist) {
var length = e.row.attachlist.length;
var url = “attachAction.action?cmd=getContent&attachGuid=”;
for (var i = 0; i < length; i++) {
var attachGuid = e.row.attachlist[i].attachGuid;
var attachFileName = e.row.attachlist[i].attachFileName;
attachHtml += ““;
}
attachHtml += “
}
return attachHtml;
}
后台:
public DataGridModel
if (model == null) {
model = new DataGridModel
{
@Override
public List
PbdSqlCondition condition = PbdSqlCondition.getSearchCondition(getRequestContext().getComponents());
this.setRowCount(pbdFzzjlQjzhService.getPbdFzzjlQjzhCount(condition));
List
if (pbdFzzjlQjzhList != null && !pbdFzzjlQjzhList.isEmpty()) {
for (PbdFzzjlQjzh pbdFzzjlQjzh : pbdFzzjlQjzhList) {
pbdFzzjlQjzh.put(“attachlist”, getIconAttachList(pbdFzzjlQjzh.getTbguid()));
}
}
return pbdFzzjlQjzhList;
}
};
}
return model;
}
public JSONArray getIconAttachList(String clientGuid) {
JSONArray arr = new JSONArray();
List
if (attachInfolist != null && !attachInfolist.isEmpty()) {
for (FrameAttachInfo attachInfo : attachInfolist) {
JSONObject obj = new JSONObject();
obj.put(“attachGuid”, attachInfo.getAttachGuid());
obj.put(“attachFileName”, attachInfo.getAttachFileName());
arr.add(obj);
}
}
return arr;
}
tree
树表联动
前端,内容区域中加上info的hidden
onNodeClick=“onTreeNodeClick” showTreeIcon=“true” textField=“text”
idField=“id” parentField=“pid” action=“getTreeModel”
resultAsTree=“false”>
function onTreeNodeClick(e) {
var nodeId = e.node.id;
var nodeType = e.node.nodeType;
var nodeInfo = nodeId + “;” + nodeType;
mini.get(“nodeInfo”).setValue(nodeInfo);
epoint.refresh([ ‘datagrid’, ‘nodeInfo’ ]);
}
后台
Nodeinfo加上并且getter and setter
private String nodeInfo;
public String getNodeInfo() {
return nodeInfo;
}
public void setNodeInfo(String nodeInfo) {
this.nodeInfo = nodeInfo;
}
// 树的构建
public TreeModel getTreeModel() {
if (treeModel == null) {
treeModel = new TreeModel()
{
@Override
public List
List
// 首次加载
if (arg0 == null) {
// 构建根节点
TreeNode rNode = new TreeNode();
rNode.setId(TreeFunction9._F9ROOT_);
//修改根显示的名称
rNode.setText(“所有项目”);
//修改根显示的名称
rNode.setExpanded(true);
rNode.getColumns().put(“nodeType”, “rootNode”);
nodes.add(rNode);
// 构建父节点
//输入父节点的类型
List
//输入父节点的类型
TreeNode pNode = null;
for (CodeItems codeItems2 : listCodeItemsByCodeName) {
pNode = new TreeNode();
pNode.setId(codeItems2.getItemValue());
pNode.setText(codeItems2.getItemText());
pNode.setPid(rNode.getId());
pNode.getColumns().put(“nodeType”, “parentNode”);
// 当前节点是否是叶子节点,需要查找包含节点相关的数据
//自己写根据类型找A表中list信息的方法,实习类修改
List
int size = sportinfolist.size();
//自己写根据类型找A表中list信息的方法
pNode.setLeaf(size < 1);
nodes.add(pNode);
}
}
else {
//实体类和list修改
List
//实体类和list修改
// 构建子节点
TreeNode sNode = null;
//实体类和list修改,传入的name修改
for (Sportinfo sportinfo : sportinfolist) {
sNode = new TreeNode();
sNode.setId(sportinfo.getRowguid());
sNode.setText(sportinfo.getSportname());
//实体类和list修改,传入的name修改
sNode.setPid(arg0.getId());
sNode.setLeaf(true);
sNode.getColumns().put(“nodeType”, “subNode”);
nodes.add(sNode);
}
}
return nodes;
}
};
}
return treeModel;
}
//实体类类型修改
public DataGridModel
//实体类类型修改
// 获得表格对象
if (model == null) {
model = new DataGridModel
{
@Override
public List
// 获取where条件Map集合
Map
sortField, sortOrder);
if (StringUtil.isNotBlank(nodeInfo)) {
String[] str = nodeInfo.split(“;”);
String nodeId = str[0];
String nodeType = str[1];
// 当点选的节点是nodeType = “subNode”
// where 1=1 and rowguid = nodeId
//子节点时,nodeid存储的是rowguid,要从另一张表的rowguid中找到对应信息,和本表的sportguid匹配的筛选出来
if (“subNode”.equals(nodeType)) {
SqlConditionUtil sqlConditionUtil = new SqlConditionUtil();
//修改guid名称,并根据guid寻找相应的数据
String sportGuid = sportinfoService.find(nodeId).getSportguid();
sqlConditionUtil.eq(“sportguid”, sportGuid);
//修改guid名称,并根据guid寻找相应的数据
conditionMap.putAll(sqlConditionUtil.getMap());
}
// 当点选的节点是nodeType=”parentNode”
//根据父节点的类型,寻找A表的信息,把guid放到一起,让B表模糊查询
if (“parentNode”.equals(nodeType)) {
//写一个根据父节点类型找list信息的方法,更改实体类
List
//写一个根据父节点类型找list信息的方法
List
//实体类和实体类list修改,并将guid添加到list中
for (Sportinfo sportinfo : sportinfolist) {
proGuidList.add(sportinfo.getSportguid());
//实体类和实体类list修改,并将guid添加到list中
}
// where 1=1 and budgetguid in
// (………projectBudgetGuidList……….)
SqlConditionUtil condition = new SqlConditionUtil();
//更改guid名称
condition.in(“sportguid“, “‘“ + StringUtil.join(proGuidList, “‘,’”) + “‘“);
//更改guid名称
conditionMap.putAll(condition.getMap());
}
}
//实体类修改
PageData<Joininfo> pageData = service.paginatorList(conditionMap, first, pageSize);
//实体类修改
this.setRowCount(pageData.getRowCount());
//实体类修改
List<Joininfo> joininfolist = pageData.getList();
//实体类修改
//需要更改对应数据的时候在此修改
// for (Taskinfo taskinfo : taskinfolist) {
// taskinfo.setApplicantguid((userService.getUserNameByUserGuid(taskinfo.getApplicantguid())));
// taskinfo.setManager(userService.getUserNameByUserGuid(taskinfo.getManager()));
// }
return joininfolist;
}
};
}
return model;
}
级联
前台:
项目类别里加onValueChanged=“onProjectTypeChanged”
// 项目类别与资金金额的联动
function onProjectTypeChanged(e) {
var val = e.value;
var projectmoney = mini.get(“projectmoney”);
switch (val) {
case “1”:
projectmoney.setValue(1000000);
break;
case “2”:
projectmoney.setValue(500000);
break;
case “3”:
projectmoney.setValue(300000);
break;
case “4”:
projectmoney.setValue(150000);
break;
default:
break;
}
}
后台:无
级联更新
前台:
onvaluechanged=“changepercent” required=“true”
requiredErrorText=“工作时长不能为空!” vType=“int” />
bind=“dataBean.taskguid” onButtonClick=“onTaskClick”
required=“true” requiredErrorText=“任务名称不能为空!” />
//弹出预算选择页面
function onTaskClick() {
epoint.openDialog(“预算列表”,
“frame/pages/rzgl/taskinfo/taskinfolistselect”,
onTaskClickCallBack);
}
function onTaskClickCallBack(budgetInfo) {
if (budgetInfo != null && budgetInfo != “close”) {
var val = budgetInfo.split(“;”);
mini.get(“taskguid”).setValue(val[0]);
mini.get(“taskguid”).setText(val[1]);
epoint.execute(‘setpercent’, ‘fui-form’, setpercentCallBack);
}
}
//百分比onvaluechanged
function changepercent(e) {
epoint.execute(‘setpercent’, ‘fui-form’, setpercentCallBack);
}
function setpercentCallBack(data) {
if(data.msg==”请先选择项目”){
epoint.alert(data.msg, ‘’, null, ‘info’);
}
else {
mini.get(“finishpercent”).setText(data.percent);
mini.get(“finishpercent”).setValue(data.percent);
}
}
后台:
//更新百分比
public void setpercent() {
if (StringUtil.isNotBlank(dataBean.getTaskguid())) {
Taskinfo taskinfo = taskinfoService.find(dataBean.getTaskguid());
int percent = (int) (((dataBean.getWorktime() + taskinfo.getPlanhour() - taskinfo.getHavetime()) 1.0)
/ taskinfo.getPlanhour() 100);
String per = percent + “%”;
dataBean.setFinishpercent(per);
addCallbackParam(“percent”, per);
}else {
addCallbackParam(“msg”, “请先选择项目”);
}
}
/
删除选定
*/
public void deleteSelect() {
List
List
String signguid= signinfo2.getRowguid();
signinfoService.deleteByGuid(signguid);
}
service.deleteByGuid(sel);
}
addCallbackParam(“msg”, “成功删除!”);
Guid转文本集合
Guid转文本(单选页面)
前台:
//初始化页面
epoint.initPage(‘signinfoworkflowaction’, ‘’, function(data) {
setControlsAccessRight(data);
if (data.sportname) {
mini.get(“sportguid”).setText(data.sportname);
}
if (data.sportperson) {
mini.get(“sportperson”).setText(data.sportperson);
}
if (data.coach) {
mini.get(“coach”).setText(data.coach);
}
});
//教练选择页面
function onCoach() {
epoint.openDialog(“请选择教练”,
“framemanager/orga/orga/ou/selectouuser”, CoachCallBack);
}
// 教练选择页面的回调
function CoachCallBack(rtnValue) {
if (rtnValue && rtnValue != “close”) {
var val = rtnValue.split(“;”);
mini.get(“coach”).setValue(val[1]);
mini.get(“coach”).setText(val[0]);
}
}
//参赛人员选择页面
function onSportperson() {
var guid = mini.get(“sportperson”).getValue();
epoint.openDialog(“请选择参赛人员”,
“framemanager/orga/orga/user/selectuser”,
SportpersonCallBack, {
param : {
userGuid : guid
}
});
}
// 参赛人员选择页面的回调
function SportpersonCallBack(rtnValue) {
if (rtnValue && rtnValue != “close”) {
var val = rtnValue.split(“SPLIT“);
mini.get(“sportperson”).setValue(val[0]);
mini.get(“sportperson”).setText(val[1]);
}
}
后台:
@Override
public void pageLoad() {
String workitemGuid = getRequestParameter(“WorkItemGuid”);
String processVersionInstanceGuid = getRequestParameter(“ProcessVersionInstanceGuid”);
pvi = wfInstanceAPI9.getProcessVersionInstance(processVersionInstanceGuid);
if (StringUtil.isNotBlank(workitemGuid)) {
item = wfInstanceAPI9.getWorkItem(pvi, workitemGuid);
}
rowguid = getRequestParameter(“guid”);
// 初始化mis表
if (StringUtil.isBlank(rowguid)) {
rowguid = wfInstanceAPI9.getContextItemValue(pvi, SQLTableName);
}
if (StringUtil.isNotBlank(rowguid)) {
dataBean = service.find(rowguid);
if (StringUtil.isNotBlank(dataBean.getSportguid())) {
addCallbackParam(“sportname”, sportinfoService.find(dataBean.getSportguid()).getSportname());
}
if (StringUtil.isNotBlank(dataBean.getCoach())) {
addCallbackParam(“coach”, userService.getUserNameByUserGuid(dataBean.getCoach()));
}
if (StringUtil.isNotBlank(dataBean.getSportperson())) {
addCallbackParam(“sportperson”, dataBean.getSportperson());
}
}
else {
dataBean = new Signinfo();
dataBean.setStatus(“10”);
dataBean.setSigndate(new Date());
dataBean.setSportdate(new Date());
dataBean.setPlanner(userSession.getDisplayName());
}
// 需要设置字段权限时设置
JSONObject jsonobject = new JSONObject();
try {
jsonobject.put(“activityGuid”, item.getActivityGuid());
jsonobject.put(“issingleform”, true);
jsonobject.put(“processversioninstanceguid”, processVersionInstanceGuid);
addCallbackParam(“accessRight”, wfInitPageAPI9.initgetTablePropertyControl(jsonobject.toJSONString()));
}
catch (JSONException e) {
e.printStackTrace();
}
}
Guid转文本(多选页面)
List页面:
前台:无
后台:
public DataGridModel
// 获得表格对象
if (model == null) {
model = new DataGridModel
{
@Override
public List
// 获取where条件Map集合
Map
sortField, sortOrder);
PageData
this.setRowCount(pageData.getRowCount());
List
for (ProjectInfo projectinfo : list) {
// 将人员guid转换为人员名
String projectManagerName = userService.getUserNameByUserGuid(projectinfo.getProjectmanager());
projectinfo.put(“projectManagerName”, projectManagerName);
String projectUserName = service.getAllUserName(projectinfo.getProjectuser());//注意无敌方法
projectinfo.put(“projectUserName”, projectUserName);
}
return list;
}
};
}
return model;
}
Edit页面:
前台:
// 初始化页面
epoint.initPage(‘projectinfoeditaction’, null, function(data) {
if (data.projectManagerName) {
mini.get(“projectmanager”).setText(data.projectManagerName);
}
if (data.projectUserName) {
mini.get(“projectuser”).setText(data.projectUserName);
}
if (data.belongZoneText) {
mini.get(“belongzone”).setText(data.belongZoneText);
}
});
后台:
@Override
public void pageLoad() {
String guid = getRequestParameter(“guid”);
dataBean = service.find(guid);
// 将项目经理guid转换为对应的文本
String projectManagerName = iUserService.getUserNameByUserGuid(dataBean.getProjectmanager());
addCallbackParam(“projectManagerName”, projectManagerName);
// 将项目人员guid转换为对应的文本
String projectUserName = service.getAllUserName(dataBean.getProjectuser());
addCallbackParam(“projectUserName”, projectUserName);
// 将所属地区value转换为文本
String belongZoneText = iCodeItemsService.getItemTextByCodeName(“所属地区”, dataBean.getBelongzone());
addCallbackParam(“belongZoneText”, belongZoneText);
if (dataBean == null) {
dataBean = new ProjectInfo();
}
}
以及list页面的后台:
for (ProjectInfo projectinfo : list) {
// 将人员guid转换为人员名
String projectManagerName = userService.getUserNameByUserGuid(projectinfo.getProjectmanager());
projectinfo.put(“projectManagerName”, projectManagerName);
String projectUserName = service.getAllUserName(projectinfo.getProjectuser());
projectinfo.put(“projectUserName”, projectUserName);
}
服务端:
/
将所有的人员guid转换为人员名
* @param projectuser
* @return
* @exception/throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/
public String getAllUserName(String projectUser) {
String[] allUser = projectUser.split(“;”);
List
IUserService userService = ContainerFactory.getContainInfo().getComponent(IUserService.class); //service里面调service的无敌方法
for** (String str : allUser) {
String name = userService.getUserNameByUserGuid(str);
nameList.add(name);
}
String projectUserName = StringUtil._join
return projectUserName;
}
Value转文本(下拉树)
前台:
epoint.initPage(‘sportinfoeditaction’, null, function(data) {
if (data.sportFieldText) {
mini.get(‘sportfield’).setText(data.sportFieldText);
}
});
后台:
public void pageLoad() {
String guid = getRequestParameter(“guid”);
dataBean = service.find(guid);
// 将比赛场地value转换为文本
String sportFieldText = iCodeItemsService.getItemTextByCodeName(“比赛场地”, dataBean.getSportfield());
addCallbackParam(“sportFieldText”, sportFieldText);
if (dataBean == null) {
dataBean = new Sportinfo();
}
}
title and url
(初次保存要在dataBean中设置pviguid,否则拿不到值)
dataBean.setPviguid(item.getProcessVersionInstanceGuid());
List前端页面
前端方法
//标题信息渲染
function renderTitle(e) {
var row = e.row;
var str = “+ “‘,’” + row.url + “‘,’” + row.rowguid
+ “‘);return false;\”>”+row.title+”“;
return str;
}
function onTitleClick(title, url, rowguid) {
if (url) {
epoint.openDialog(title, url);
} else {
//详情页信息,将地址改为detail地址
epoint.openDialog(title,
“frame/pages/xmcg/assetinfom/assetinfomdetail?guid=”
+ rowguid);
}
}
后台方法写在getDataGridData 中的fetchData最后
//修改实体类
List
for (Joininfo joininfo : joininfolist) {
//修改实体类
//此处写上需要value文字互转的信息
joininfo.setManager((userService.getUserNameByUserGuid(joininfo.getManager())));
//此处写上需要value文字互转的信息
// 获取标题和处理地址
String username = joininfo.getOperateusername();
//标题修改
String title = username + “的采购详情”;
//标题修改
String url = “”;
//修改实体类
if (StringUtil.isNotBlank(joininfo.getPviguid())) {
ProcessVersionInstance pvi = instanceAPI9.getProcessVersionInstance(joininfo.getPviguid());
//修改实体类
List
status.add(WorkflowKeyNames9._WorkItemStatusActive**);
status.add(WorkflowKeyNames9.WorkItemStatus_Inactive);
List
// 获取当前登录人的待办项
if (userSession.getUserGuid().equalsIgnoreCase(workItem.getOperatorForDisplayGuid())) {
title = workItem.getWorkItemName();
url = workItem.getHandleUrl();
}
}
}
joininfo.put(“title”, title);
joininfo.put(“url”, url);
}
//修改return的list
return** joininfolist;
//修改return的list
select页面筛选
public DataGridModel
// 获得表格对象
if (model == null) {
model = new DataGridModel
{
@Override
public List
// 获取where条件Map集合
Map
sortField, sortOrder);
SqlConditionUtil sqlConditionUtil = new SqlConditionUtil();
sqlConditionUtil.gt(“limitperson-signperson”, 0);
conditionMap.putAll(sqlConditionUtil.getMap());
PageData
this.setRowCount(pageData.getRowCount());
return pageData.getList();
}
};
}
return model;
}public DataGridModel
// 获得表格对象
if (model == null) {
model = new DataGridModel
{
@Override
public List
// 获取where条件Map集合
Map
sortField, sortOrder);
SqlConditionUtil sqlConditionUtil = new SqlConditionUtil();
sqlConditionUtil.gt(“limitperson-signperson”, 0);
conditionMap.putAll(sqlConditionUtil.getMap());
PageData
this.setRowCount(pageData.getRowCount());
return pageData.getList();
}
};
}
return model;
}
验证集合
验证
在add,edit,workflow里都有
Add:
前端:
// 关闭操作的回调
function closeCallback(data) {
if (data.same) {
epoint.alert(data.msg);
} else if (data.date) {
epoint.alert(data.msg);
} else if (data.limitperson) {
epoint.alert(data.msg);
} else
if (data.msg) {
epoint.alertAndClose(data.msg, ‘’, null, null, ‘info’);
}
}
}
后端:
/
保存并关闭
*/
public void add() {
ataBean.setRowguid(UUID.randomUUID().toString());
dataBean.setOperatedate(new Date());
dataBean.setOperateusername(userSession.getDisplayName());
int count = service.checkName(dataBean.getSportname());
if (count > 0) {
addCallbackParam(“msg”, “项目名重复”);
addCallbackParam(“same”, true);
}
else if (EpointDateUtil.getIntervalDays(dataBean.getSportdate(), new Date()) >= 0) {
addCallbackParam(“msg”, “比赛时间不能小于当前时间”);
addCallbackParam(“date”, true);
}
else if (dataBean.getLimitperson() <= 0) {
addCallbackParam(“msg”, “限制人数必须为正整数”);
addCallbackParam(“limitperson”, true);
}
else {
service.insert(dataBean);
addCallbackParam(“msg”, “保存成功!”);
dataBean = null;
}
}
服务端:
/
项目重名验证
@param sportname
@return
@exception/throws [违例类型] [违例说明]
@see [类、类#方法、类#成员]
/
public int checkName(String sportname) {
String sql = “select count() from sportinfo where sportname = ?”;
return baseDao.queryInt(sql, sportname);
}
Edit:
前端:无
后端:
/
保存修改
*/
public void save() {
dataBean.setOperatedate(new Date());
// 项目名称的重名判断
String projectNameOld = service.find(dataBean.getRowguid()).getProjectname();
String projectNameNew = dataBean.getProjectname();
int count = service.checkExist(projectNameOld, projectNameNew);
if (count > 0) {
addCallbackParam(“msg”, “项目名称重复!”);
addCallbackParam(“sameName”, true);
}
else {
service.update(dataBean);
addCallbackParam(“msg”, “修改成功!”);
}
}
/
保存修改
/
public void save() {
dataBean.setOperatedate(new Date());
// 项目名称的重名判断
String projectNameOld = service.find(dataBean.getRowguid()).getProjectname();
String projectNameNew = dataBean.getProjectname();
int count = service.checkExist(projectNameOld, projectNameNew);
if (count > 0) {
addCallbackParam(“msg”, “项目名称重复!”);
addCallbackParam(“sameName”, true);
}
else {
service.update(dataBean);
addCallbackParam(“msg”, “修改成功!”);
}
}
服务端:
/**
修改页的重名判断
@param projectNameOld
@param projectNameNew
@return
@exception/throws [违例类型] [违例说明]
@see [类、类#方法、类#成员]
/
public int checkExist(String projectNameOld, String projectNameNew) {
String sql = “select count() from projectinfo where projectname != ? and projectname = ?”;
return baseDao.queryInt(sql, projectNameOld, projectNameNew);
}
WorkFlow:
前端:无
后端:
private boolean save() {
// 如果不满足业务逻辑返回false
// if (不符合条件) {
// addCallbackParam(“msg”, “提示错误”);
// return false;
// }
if (“报名申请”.equals(item.getActivityName())) {
Sportinfo sportinfo1 = sportinfoService.find(dataBean.getSportguid());
if (EpointDateUtil._getIntervalDays(dataBean.getSigndate(), sportinfo1.getSportdate()) < 15) {
addCallbackParam(“msg”, “报名时间离比赛时间小于15天”);
return false;
}
}
}