Dorado7常用JS以及常见错误

本篇将给出Dorado7的常用js和常见错误:

1.dataSet添加数据

view.get("#dsProduct").getData().insert();
或者view.get("#dsProduct").insert();
view.get("#dsProduct.data").insert();推荐使用                       
“#dsProduct.data”表示拿到数据对象

2.删除当前选择记录
var record = this.get("#dsProduct.data:#");
if (record) {
    dorado.MessageBox.confirm("确认要删除当前记录吗?", function(){
        record.remove();
    });
}
else {
    dorado.MessageBox.alert("当前没有数据可以删除!");
}

//获得当前dataset的字段,并赋值(dorado7升级包,特别注意)
var aaa = view.get("#dsProduct.data:#").get("xxx");
view.get("#dsProduct").set("parameter",{
    aaa: aaa,
    org:"test"
});

//含有下级Reference
view.get("#dsPrCenter").getData("#").getData("#stmain");
view.get("#dsPrCenter").getData("#.#stmain");

3.dataset放弃当前操作数据
view.get("#dsProduct.data:#").cancel();

4.显示dialog对话框
view.id("dialogEdit").show();
view.get("#dialogEdit").show();

5.隐藏dialog对话框
view.get("#dialogEdit").hide();

6.参数查询,其中默认情况下Entity中存储数据的key值使用每一个AutoFormElement的name属性;如果使用了property属性,那么key将使用property属性设定的值
var entity = this.get("#autoForm1.entity");//保证json对象内部的参数与后台接受的parameter参数名相同
view.get("#dsProduct") .set("parameter",entity).flushAsync();

//获得AutoForm中的entity内容
var entity = view.id("recAutoForm").get("entity");
alert(entity.length+"   "+entity.width);

7.获得当前实体对象数据的“产品名称”
dorado.MessageBox.alert(view.get("#dsProduct.data:#.productName"));

8.对实体对象属性设值
view.set("#dsProduct.data:#.productName","testValue");

9.通过json对象赋值,清除查询框内容
view.set("#autoForm1.entity", {
    productName: null,
    unitsInStock: null
});
//升级版本
view.get("#themeDetailForm.entity").set("REASON_MEMO","");//设定当前编辑框值为空

10.ListDropDown和AutoMappingDropDown的区别
ListDropDown ==》self.set("value",1);系统直接会将数值1赋给文本域
AutoMappingDropDown ==》self.set("value",1);系统会根据对应的文本域的属性mapValues绑定的Entity进行映射显示。
例如这里映射的Entity对象为1 男,0 女。在这里文本域会根据设置显示为“男”

11.通过点击菜单节点,获得当前节点对应dataset的entity对象对应的属性
var node = self. get("currentNode");
if(node.get("level")==3){
	//获得当前节点对应的数据实体对象
	var entity = self.get("currentNode.data");
	//通过实体对象名称.属性获得指定的属性值
	var id = entity.get("example.id");
	//刷新对应的dataset
	this.get("#dsExample").set("parameter",id).flushAsync();
}

12.TabControl中tab的切换
// 通过tab的name属性切换
view.get("#tabControl").set("currentTab","tab2");
// 通过tab的索引(index)属性切换
view.get("#tabControl").set("currentIndex",1);

//根据名字切换tab
var tab = self.get("currentTab").get("name");
if(tab!="tab4"){
	view.id("tabControl").disableTab("tab4");
}

13.对AutoForm表单中的字段设定只读和是否显示
var element = view.get("#themeDetailForm").getElement("REASON_MEMO");
element.set("readOnly",false);
view.get("#procTopicHeaderForm").getElement("TOTAL_SCORE").set("visible",false);

14.对按钮的控制显示
view.get("#btnPrint").set("visible",true);




15.EntityList的遍历
var datas = view.id("dsHeader").getData("#.detail");
datas.each(function(entity){
	alert(entity.get("RIGHT_MODE"));
	alert(entity.get("RIGHT_ITEM"));
});
//获取当前选择的项
var datas = view.get("#dgProcZperright").get("selection");
var flag = false;
//遍历选择项,判断当前被遍历的数据是否包含已生成试卷的项
datas.each(function(entity){
	var isCreatePaper = entity.get("IS_CREATE_PAPER");
	//若有调整,若无执行生成过程
	if(isCreatePaper=="1"){
		flag = true;
		return false;
	}else{
		flag;
	}
});
//若有调整,若无执行生成过程
if(flag==true){
	dorado.MessageBox.alert("当前选择项包含已生成试卷的项,请调整!");
}else{
}

//选择项是否选择(false代表未选中,true代表被选中)
view.id("sourceGrid").set("selection","false");
alert(view.id("sourceGrid").get("selection"));


//设定为单项选择项
view.get("#sourceGrid").set("selectionMode","singleRow");

//判断选择的项数量
var entity = view.id("sourceGrid").get("selection");
if(entity.length>1){

}

16.获取Reference对应的DataType中的字段
var entity = view.id("dsHeader").getData("#.#detail");
alert(entity.get("RIGHT_MODE"));

var entity = view.get("#dataSetGroup.data:#.#users");
alert(entity.get("username"));

17.dataset中数据传递set
//由于RIGHT_MODE字段的无法保存数据,使用了自定义字段MODE替代,传递后台保存数据
var entity = view.id("dsHeader").getData("#.#detail");
var right_mode = entity.get("RIGHT_MODE");
if(right_mode!=null){
	entity.set("MODE",right_mode);
}

18.关闭下拉框
view.id("customDropDown").close(value);

19.获得dataset的当前记录常用的写法
var entity = view.get("#dataSetGroup.data:#.rp_confield_desc");
var entity = view.id("dataSetGroup").getData("#.rp_confield_desc");
var entity = view.get("#dataSetGroup.data:#");
var a = entity.get("rp_confield_desc");

var entity = view.get("#dataSetGroup.data:#").get("rp_confield_desc");

20.action的参数传递方式,以及获得返回值
var rightMode = "";
view.id("actGetPatter").set("parameter",{
	"tableName" : tableName,
	"fieldName" : fieldName
}).execute(function(result){
	rightMode = result.RIGHT_MODE;
});
后台对应的方法
public Map<String, Object> getPatter(String tableName, String fieldName) {}

20.//iReport的下载和在线预览
bdf.JasperReports.prototype.showReport=function(jasperFile,parameters){}
bdf.JasperReports.prototype.downloadReport=function(jasperFile,type,parameters){}

21.通过业务的某个字段在刷新后再次定位到当前数据实体
var entity1 = view.get("#dataSetUser.data:#");
var entityList = view.get("#dataSetUser.data");
view.get("#dataSetUser").set("pageNo",2);
view.get("#dataSetUser").flushAsync();
//entityList.first();
entityList.each(function(entity){ 
   if(entity1.get("username")==entity.get("username")){
       entityList.setCurrent(entity);
   }
}); 

22.view中定义公用的function
self.resetUserPhoto = function(){}
window.changeUserPhoto = function(img){}

window.self 功能:是对当前窗口自身的引用。它和window属性是等价的。语法:window.self。注:window、self、window.self是等价的。
window.top 功能:返回顶层窗口,即浏览器窗口。 语法:window.top 注:如果窗口本身就是顶层窗口,top属性返回的是对自身的引用。
window.parent 功能:返回父窗口。语法:window.parent 注:如果窗口本身是顶层窗口,parent属性返回的是对自身的引用。

23.动态创建按钮并关闭父页面的dialog
this.createButton = function(){
    view.addChild(new dorado.widget.Button({
        id: "saveButton",
        caption: "中途提交",
        action: "SavePersResult",
        icon: "url(>skin>common/icons.gif) -20px 0px",
        onClick: function(self,arg){
            view.id("SavePersResult").execute();
			//关闭父页面
			window.parent.$id("dialogTopicDetail").objects[0].hide();
        }    }));
}


将控件添加到AufoForm中
this.createMidButton = function(){
    view.id("form").addElement(new dorado.widget.Button({
        id: "saveMidButton",
        caption: "中途提交",
        action: "SavePersResult",
        icon: "url(>skin>common/icons.gif) -20px 0px",
        onClick: function(self,arg){
            view.id("SavePersResult").execute();
            if (window.parent.$id("dsTopicList").objects[0].getData("#").get("IS_CREATE_PAPER") == "0") {
                window.parent.$id("dsTopicList").objects[0].getData("#").set("IS_CREATE_PAPER","1");
                window.parent.$id("updateAction1").objects[0].execute();
            }
			//关闭父页面
            window.parent.$id("dialogTopicDetail").objects[0].hide();
			        }    }));
}


24.修改TextEditor的文字样式以及边框颜色
在onRefreshDmo添加
$(self.getDom().firstChild).css("color","yellow");
var oHead = oHtml.firstChild;  
var oBody = oHtml.lastChild; 
var oHead = oHtml.childNodes.item(0);  
view.set("#text.style",{
    "border": "1px #FC3737 solid",
    color: "red"
});

25.返回datagrid的rownumcolumn的序列号,其中rowmun的下表从0开始,所以取值的时候位index+1
var grid = view.id("dgPrStitem");
var entity = grid.getCurrentItem();
var row = grid.get("itemModel").getItemIndex(entity)+1;
alert(row);


26.datagrid数据行的上下移动
//datagrid中数据向下移动一行(向上移动的效果思路一致)
//思路:
//1. 首先获得当前移动的数据entity,并且将光标移到到下一行move(1);
//2. 其次记录移动后光标定位的数据eneity,并且将上一行的数据remove掉;
//3. 最后将原本的entity数据insert到光标定位到当前行的后面。
//这样整体上形成的效果就是数据向下移动
var grid = view.id("dgPrStitem");
var entity = view.id("dsPrStitem").getData("#");
var entityList = view.id("dsPrStitem").getData();
entityList.move(1);
entityList.remove(entity);


//获得当前数据的序列号,修改移动后数据的序列号
var currentity = view.id("dsPrStitem").getData("#");
var rown = grid.get("itemModel").getItemIndex(currentity)+1;
currentity.set("RANK_ORDER",rown);


//添加的数据,并修改序列号
entityList.insert(entity,"after",currentity);
var insertentity = view.id("dsPrStitem").getData("#");
var rowns = grid.get("itemModel").getItemIndex(insertentity)+1;
insertentity.set("RANK_ORDER",rowns);
insertentity.setState(dorado.Entity.STATE_MODIFIED);
view.id("actStItem").execute();

27.bdf对页面布局的保存和重置
保存界面
var componentProfile = new bdf.ComponentProfile.DataGrid();
componentProfile.saveGridSet(this,"gridMain");

重置界面
var componentProfile = new bdf.ComponentProfile.DataGrid();
componentProfile.resetGrid(this,"gridMain");

28.CheckBox换行问题
不考虑在默认支持此功能,给两个解决办法:
1. 使用exClassName
比如为CheckBox定义一个exClassName是d-checkbox-multiline,然后这么定义CSS:

.d-checkbox-multiline {
	height: auto;
}
 
.d-checkbox-multiline .caption{
	white-space: normal;
}
RadioButton类似。


2. 既然使用了HtmlContainer,就使用原生的Html中的CheckBox和RadioGroup。

29.datagrid列头换行问题
onRenderHeaderCell 事件中写
arg.dom.innerHTML="1<br>2<br>3";

30.自定义控件创建
var dom = jQuery(arg.dom);
dom.empty();
	dom.xCreate({
	        tagName: "Button",
	        content: "打印",
	        onclick: function(){
				alert(11);
	        }
    });

31.鼠标指针移动到指定的对象上时发生
在控件的onCreateDom()中添加
arg.dom.onmouseover = function(){
    //这里面处理
    dorado.widget.NotifyTipManager.notify("鼠标移动到我上面时,会自动出现提示信息!");
}

32.鼠标移动到某个控件上让鼠标指针变成小手
添加style  cursor:pointer

33.树节点的处理(递归树)
------------------------------------------------------------------------------------------------------
/**
 * 获得所有的顶级节点
 */
 //根节点,此节点时树状列表内部的顶层节点
var root = self.get("root");
var nodes = root.get("nodes");


 //节点记录的变量
var labels = "", label = "", childLabels = "", rootLabel="", childNodes, childChecked, count = 0;


//遍历根节点
nodes.each(function(node){  
	var checked = node.get("checked");
	
	//checked包含三种状态,选中(true)、半选中(null)、不选中(false)。当为true、null时表示选中
	if(checked!=false){   
		count++;  //父节点计数器
		rootLabel =  node.get("label");  //父节点
		label = getChildNode(node);  //子节点
		if(childLabels){
			childLabels="";
		}
		
		//拼接label字符串
		labels += count+"."+rootLabel +": "+ label+";  ";  
	}
	
});


//将拼接的label赋值给label
view.id("label4").set("text",labels);




/**
 * 处理递归子节点的函数
 * @param {Object} node
 */


function getChildNode(node){
	//判断当前选中节点是否展开,并是否包含被选中的子节点
	if(node.get("expanded")==true){
		childNodes = node.get("nodes");
		childNodes.each(function(childNode){
			childChecked = childNode.get("checked");
			if(childChecked!=false){
				if(childLabels){
					childLabels += ","+childNode.get("label");
				}else{
					childLabels+=childNode.get("label");
				}
				//递归函数调用
				getChildNode(childNode);
			}
		});
		return childLabels;
	}
}

34.DataGrid的DataColumn中定义CheckBox
/**
 * 获得所有的顶级节点
 */
 //根节点,此节点时树状列表内部的顶层节点
var root = self.get("root");
var nodes = root.get("nodes");


 //节点记录的变量
var labels = "", label = "", childLabels = "", rootLabel="", childNodes, childChecked, count = 0;


//遍历根节点
nodes.each(function(node){  
	var checked = node.get("checked");
	
	//checked包含三种状态,选中(true)、半选中(null)、不选中(false)。当为true、null时表示选中
	if(checked!=false){   
		count++;  //父节点计数器
		rootLabel =  node.get("label");  //父节点
		label = getChildNode(node);  //子节点
		if(childLabels){
			childLabels="";
		}
		
		//拼接label字符串
		labels += count+"."+rootLabel +": "+ label+";  ";  
	}
	
});


//将拼接的label赋值给label
view.id("label4").set("text",labels);




/**
 * 处理递归子节点的函数
 * @param {Object} node
 */


function getChildNode(node){
	//判断当前选中节点是否展开,并是否包含被选中的子节点
	if(node.get("expanded")==true){
		childNodes = node.get("nodes");
		childNodes.each(function(childNode){
			childChecked = childNode.get("checked");
			if(childChecked!=false){
				if(childLabels){
					childLabels += ","+childNode.get("label");
				}else{
					childLabels+=childNode.get("label");
				}
				//递归函数调用
				getChildNode(childNode);
			}
		});
		return childLabels;
	}
}

35.Label内容加粗
style添加font-weight=bold

36.鼠标指针
//获得鼠标的位置
var clientX = arg.event.clientX;
var clientY = arg.event.clientY;


//指定画中机关在指定区域内显示,否则隐藏
if ((clientY > 20) && (clientX > 300)) {
    view.id("floatPanel1").set("visible",true);
    view.id("floatPanel2").set("visible",true);
    view.id("floatPanel3").set("visible",true);
}else {
    view.id("floatPanel1").set("visible",false);
    view.id("floatPanel2").set("visible",false);
    view.id("floatPanel3").set("visible",false);
}

37.调用dom事件(onrefreshDom)
arg.dom.onmousemove = function(){
	view.id("floatPanel1").set("visible",true);
    view.id("floatPanel2").set("visible",true);
    view.id("floatPanel3").set("visible",true);
}


arg.dom.onmouseout = function(){
	view.id("floatPanel1").set("visible",false);
    view.id("floatPanel2").set("visible",false);
    view.id("floatPanel3").set("visible",false);
}

38.IFrame的内置对象
var windows = view.id("iframe1").get("iFrameWindow");
var container = windows.$id("containerA").objects[0];


39. 根据key得到mapValues的value值

if (arg.property == "whCode") {
	// 由code拿到name
	var key = arg.entity.get("whCode");
	var value = arg.entity.getPropertyDef("whCode").getMappedValue(key);
	arg.entity.set("whAbbr", value);
}


40.dataGrid onRenderRow事件 隔行换色
var row = self.get("itemModel").getItemIndex(arg.data)+1;
if(row%2==0){
	arg.dom.style.background = "red";
}else{
	arg.dom.style.background = "";
}

常见错误:

1.无法在"XXXXX"类中查找到唯一匹配的"XXXX"方法
DataSet pageSize可能没写,确认类型和方法名存在
2.Unknown ExposedService [xxxxxx#xxxx]

AJaxAction里面的Service可能没写相应的类名和方法名

常见错误后续会持续更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值