Dorado7常用代码
目录
el表达式
view层获取config中配置
var path="${configure.getString("ling2.mainFrame.welcomePath")}";
var icon="${configure.getString("ling2.mainFrame.welcomeIcon")}";
var title="${configure.getString("ling2.mainFrame.welcomeTitle")}";
if(path){
window.openUrlInFrameTab(path,title,icon,true,false);
}
${param["id"]} ${param.replyUser} ${{this.id}}
ling2快速代码步骤
分析业务 创建model 自动生成
private static void genProjectItem(String resultfolder) {
OneToManyPojo oneToManyPojo=new OneToManyPojo();
oneToManyPojo.setOne(AutoProjectUtils.revertClass2Pojo(ProjectItem.class));
oneToManyPojo.addMany(ItemEntity.class);
AutoProjectUtils.executeOneToManyMultipleFile(resultfolder,oneToManyPojo );
}
executeOneToManyRelationFile
code
${dorado.getDataProvider("dictionaryView#getdDictionaryEntitiesByCode").getResult("RR_RATE")}
${dorado.getDataProvider("dictionaryView#getdDictionaryEntitiesByCodeWithNull").getResult("RR_RATE")}
name
projectItemView#saveOpenCode
var projectid = view.id("dataSetProjectItem").getData("#.id");
var dataset=view.id("dataSetProjectItem");
var action = view.id("ajaxActionOpenCode");
if(projectid==null){
dorado.MessageBox.Exception("请选择数据后再进行此操作!");
}
action.set("parameter", {
projectid : projectid
});
dorado.MessageBox.confirm("您真的要进行当前申请么?", function() {
action.execute(function(result) {
dorado.MessageBox.alert("操作完成");
dataset.flush();
});
})
数据导入
根据excel写一个model 再实现ImportProcessor接口,一般会继承BaseImportProcessor
再将 public List loadPreviewData() throws Exception public Integer savePreviewData(ImportResult records) throws Exception 2个方法写全
view节点的package属性加importexcel
创建一个按钮,写事件
var importaction = new dorado.widget.ImportExcelAction({
startRow : 5
});
importaction.set("excelModelId", "TRPROJECTIMPORT");
importaction.doExecuteAsync();
下拉框
用户选择
添加控件到页面 配置过滤的角色
view.id("singleUserSelect1").set("roles",null);
view.id("singleUserSelect1").execute(function(datas){
//var form=view.id("autoForm1");
//var entity=form.get("entity");
var currentdata=view.id("dataSetProjectItem").getData("#");
currentdata.set("pic",datas.get("username"));
//form.refreshData();
});
主从数据同时保存
Map itemEntityInParams=D7PageUtils.assembleDatasetMap(inParam.getRelitemEntitys());
saveItemEntityDataListsMap(itemEntityInParams);
@DataResolver
public void saveProjectItem(Collection<ProjectItemInParam> objs) throws Exception {
Map results= D7PageUtils.assembleDatasetMap(objs);
List<ItemEntityInParam> childs=new ArrayList<ItemEntityInParam>();
for(ProjectItemInParam inParam:objs){
childs.addAll(inParam.getRelitemEntitys());
}
projectItemService.saveProjectItemDataListsMap(results);
saveItemEntity(childs);
}
页面跳转
更多参考javascript页面跳转javascript 获取当前url
var url="com.ling2.marketing.a.view.shopping_month.ling";
var id=view.id("dataSetShopping").getData("#.id");
if(id){
window.location.href=url+"?id="+id+"&backurl="+window.location.href;
}
var backurl='${param["backurl"]}';
window.location.href=backurl;
基础数据选择
var orgSelect1=view.id("orgSelect1");
orgSelect1.set("dataType","KJKM");
orgSelect1.execute(function(data){
alert(data.get("code"));
});
页面多数据,连接显示
var entitylist = arg.entity.get("relPositions");
var name = [];
if (entitylist) {
entitylist.each(function(item){
name.push(item.get("name"));
});
}
arg.text= name.join(",");
//@Bind #buttonExportPageOffice.onClick
!function(self, arg) {
var masterData = view.id("dataGridIssueSummary").get("selection");
var ids=[];
if (masterData.length>0) {
masterData.each(function(item){
ids.push(item.get("id"));
});
var id=ids.join(",");
window.location.href="pageoffice/ExportIssueSummary.jsp?id="+id;
}else{
dorado.MessageBox.alert("您什么都没有选择哦");
}
}
消息提示
dorado.MessageBox.show({
title: "提示",
icon: dorado.MessageBox.INFO_ICON,
message: "确定要保存当前数据?",
buttons: ["yes", "no"],
detailCallback: function(buttonId){
if (buttonId == "yes") {
}
else {
}
}
})
dorado.MessageBox.promptMultiLines("请输入填写申请原因", {
defaultText: "这是一段默认的文字",
callback: function(text){
if(text!=null&&text!=''){
ajaxActionCreateNew.set("parameter", {projectId:projectId,projects:selectedItems,fromPage:"app",reason:text}).execute(function(result) {
flushData();
view.id("dialogQrrProjectLink").hide();
});
}else{
}
}
});
js获取国际化
dorado.widget.NotifyTipManager.notify("${res.fileNameTipContent}");
eval
arg.cellEditor.setEditorControl(eval("new dorado.widget.TextEditor()"));
tab
var tabControl=view.id("tabControlWorkarea");
var tab=tabControl.getTab(url);
if(!tab){
tab=new dorado.widget.tab.IFrameTab({
name:url,
path:url,
caption:caption,
icon:icon,
closeable:closeable
});
tabControl.addTab(tab);
}else if(double){
tab.set("path",url);
if(caption){
tab.set("caption",caption);
}
}
tabControl.set("currentTab",tab);
格式化文件大小
/** @Bind #gridFiles1.#size.onRenderCell */
/** @Bind #gridFiles2.#size.onRenderCell */
!function(arg) {
arg.dom.innerHTML = prettySize(arg.data.get('size'));
};
var fileType = filename.substring(filename.lastIndexOf(".")+1).toLowerCase();
var filename=filename.substr(filename.lastIndexOf('/')+1).substr(filename.lastIndexOf('\')+1);
var parseSize = function(size) {
var mul;
if (typeof (size) == 'string') {
size = /^([0-9]+)([mgk]?)$/.exec(size.toLowerCase().replace(
/[^0-9mkg]/g, ''));
mul = size[2];
size = +size[1];
if (mul == 'g') {
size *= 1073741824;
}
if (mul == 'm') {
size *= 1048576;
}
if (mul == 'k') {
size *= 1024;
}
}
return size;
}
var prettySize = function(value) {
var _format = function(value, unit) {
return (value.toFixed(1) + ' ' + unit).replace('.0', '');
};
var K = 1024;
var M = K * K;
var G = M * K;
var T = G * K;
var dividers = [ T, G, M, K, 1 ];
var units = [ 'TB', 'GB', 'MB', 'KB', 'B' ];
if (value == 0) {
return '0B';
} else if (value < 0) {
return 'Invalid size';
}
var result = '';
var temp = 0;
for ( var i = 0; i < dividers.length; i++) {
var divider = dividers[i];
if (value >= divider) {
temp = value / divider;
if (temp < 1.05) {
result = _format(value,
units[((i + 1) < units.length) ? (i + 1) : i]);
} else {
result = _format(temp, units[i]);
}
break;
}
}
return result;
};
view init
@Component
public class DetailIndirectValueDynaView {
public void onViewInit(View view,DataGrid dataGridIndirectValue){
String detailId=DoradoContext.getAttachedRequest().getParameter("detailId");
System.out.println("间接风险渲染定义表代码为:"+detailId);
}
}
<View listener="spring:detailIndirectValueDynaView#onViewInit">
tag的使用
批量设置方法
//@Bind ^skin-item.onClick
!function(self, actionChangeSkin) {
actionChangeSkin.set("parameter", self.get("userData")).execute(function() {
window.location.reload();
});
}
根据标签获得一批对象的方法包括:
view.get("^foo") 今后推荐的方法。例如:view.set("^foo.disabled", true) view.tag("foo") 今后不再推荐。 view.set("^foo.disabled", true);//将所有标签为foo的控件对象的disabled属性设置为false. view.set("^button").set("toggled", false);//为演示效果,让所有按钮恢复常态 view.set("^odd").set("toggled", true);//找到所有的标签为奇数的按钮,并使其处于按下的状态
按下所有按钮:
view.set("^button").set("toggled", true);
还原所有按钮:
view.set("^button").set("toggled", false);
view.get("title") //读取View自身的虚拟属性 view.get("#buttonOK") //获取View中的某一个对象 view.get("^foo") //根据tags机制获取View中的一批对象 view.get("@DataTypeProduct") //根据名称获得某个DataType
dorado7 parent控件
dorado7页面顶层对象
- view是dorado7页面中的默认对象,也是顶层对象,id为viewMain,通过她可以获取到dorado7页面中所有控件。
- parent是js默认父窗口对象,parent.method是调用父窗体中全局函数,如parent.openTab()。
- 在view页面中通过parent.$id('viewMain').objects[0]可以获取到当前d7页面的父d7页面的view对象。
来自 <http://hi.baidu.com/wicom/item/b3bf679a61050136326eeb78>
var group = window.opener.$id("控件id"); var component = group.objects[0];
解释一下:
- window.opener返回当前window的父window
- $id()用于根据指定的id查找一个window下所有匹配的控件。由于Dorado7允许一个window中存在多个View,所以你有可能得到多个同id的控件。当然,这种场景极为罕见。
$id()的返回值是dorado.ObjectGroup,你如果你确定你要找的控件是存在的,那么直接通过group.objects[0]就能得到你要的控件了。
ondatachange
arg : Object 事件参数。
- entity : dorado.Entity触发事件的实体对象。
- property : String被改变的属性名。
- oldValue : Object原先的属性值。
- newValue : Object将要写入的值。
grid checkbox是否可以勾选
var setCheckBOx = function(isShow){
if(isShow){
if (arg.dom.firstChild) {//有权限
arg.dom.firstChild.className = "d-checkbox d-checkbox-default d-checkbox-icononly d-focused d-checkbox-focused d-checkbox-unchecked";
}
arg.processDefault=true;
}else{
if (arg.dom.firstChild) {
arg.dom.firstChild.className = "";
}
arg.processDefault=false;
}
}
父页面操作
//关闭父页面
window.parent.$id("dialogTopicDetail").objects[0].hide();
- 主页面的方法
refreshAdd = function(){
if (view.get("#dialogAdd")) {
view.get("#dialogAdd").hide();
refresh();
}
}
refreshEdit = function(){
if (view.get("#dialogEdit")) {
view.get("#dialogEdit").hide();
refresh();
}
}
- 子页面方法
parent.refreshEdit();
tabcontrol
通过JS动态设置当前标签页
TabControl提供了currentTab属性用于获取或存取当前显示的控件,如:
var currentTab = cardBook.get("currentTab");//获取TabControl控件当前显示的Tab对象 currentTab.set("currentTab", tabDept);//将TabControl控件中的tabDept控件设置为当前可见的Tab
另外所有的控件都按照添加到TabControl中的顺序有一个顺序号。这样你就可以通过TabControl提供的currentIndex属性获取或动态设置当前可见的控件,如:
tabControl.set("currentIndex", 2);//将卡片簿中序号为2的控件设置为当前可见的控件
注意:默认的序号是从0开始的
另外当我们通过鼠标操作或JS代码,最终导致currentTab和currentIndex属性发生变化的时候都会触发TabControl的beforeTabChange和onTabChange事件。
页面中使用TabControl加入IFrameTab,如何在父页面中获得IFrameTab子页面对象
答:如加入TabControl id为tabControlDemo,获取方式为:
var frameTab=view.get("#tabControlDemo").getTab(0); view.get("#tabControlDemo").set("currentTab",frameTab); var frameWindow= frameTab.get("control.iFrameWindow");
上面js代码中frameTab是IFrameTab对象(也可以通过getTab(id)的方式获得),第二行的设置frameTab为当前tab的方式保证iframe页面加载,frameWindow即为子页面对象。获得 frameWindow对象后,可以通过frameWindow.test()访问子页面的test方法, 同时也可以通过frameWindow.$id(controlid).objects[0]获得子页面dorado对象(子页面为dorado页面)。
示例代码:
Issue地址:http://bsdn.org/projects/dorado7/issue/dorado7-969
reset
var data = view.id("dataSetUser").getData("#"); data.reset("orgs");
beforeSelectionChange
var loginUser="${loginUsername}";
var entitys= arg.added;
var removes= [];
if(entitys){
entitys.each(function(entity){
if(entity.get("areProject")==true){
removes.push(entity);
}
if(entity.get("areProject")==false){
var isinuser=(entity.get("staff")==loginUser||entity.get("aic")==loginUser);
//必须为当前登录人,并且提交状态为未提交或者退回状态
//不是和自己有关的,看都看不到
if((entity.get("submitStatus")!=""&&entity.get("submitStatus")!=1)){
removes.push(entity);
}
}
//alert(entitys.length)
});
removes.each(function(obj){
entitys.remove(obj);
});
}
//self.disableListeners();
console.log(1)
var alldata=view.id("dataSetRole").get("data");
console.log(alldata.);
var added =arg.added;
var removed =arg.removed ;
if(added&&added.length>0){
var entity=added[0];
//console.log(entity);
//console.log(entity.get("key"))
if(entity.get("key")==0){
//var alldata=view.id("dataSetRole").getData();
//console.log(alldata);
alldata.each(function(item){
item.set("selected",true);
})
//self.set("selection",alldata);
}
}
//self.enableListeners();
//return false;
//console.log(selection)