Dorado7常用代码

来自ling
跳转至: 导航搜索

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页面顶层对象

  1. view是dorado7页面中的默认对象,也是顶层对象,id为viewMain,通过她可以获取到dorado7页面中所有控件。
  2. parent是js默认父窗口对象,parent.method是调用父窗体中全局函数,如parent.openTab()。
  3. 在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];

解释一下:

  1. window.opener返回当前window的父window
  2. $id()用于根据指定的id查找一个window下所有匹配的控件。由于Dorado7允许一个window中存在多个View,所以你有可能得到多个同id的控件。当然,这种场景极为罕见。

$id()的返回值是dorado.ObjectGroup,你如果你确定你要找的控件是存在的,那么直接通过group.objects[0]就能得到你要的控件了。

ondatachange

arg : Object 事件参数。

  1. entity : dorado.Entity触发事件的实体对象。
  2. property : String被改变的属性名。
  3. oldValue : Object原先的属性值。
  4. 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)