dorado7常用內容


1.dataset添加數據
this.get("#dsProduct").getData().insert();
或者this.get("#dsProduct").insert();
this.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 pkVipCustomer = view.get("#dsVipCustomer.data:#").get("PK_COO_CRM_VIPCUSTOMER");
view.get("#dsVipCustomerCoop").set("parameter",{
pkVipCustomer: pkVipCustomer,
org:"test"
});


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

3.dataset放棄當前操作數據
this.get("#dsProduct.data:#").cancel();


4.顯示dialog對話框
this.id("dialogEdit").show();
this.get("#dialogEdit").show();


5.隱藏dialog對話框
this.get("#dialogEdit").hide();


6.參數查詢,其中默認情況下Entity中存儲數據的key值使用每一個AutoFormElement的name屬性;如果使用了property屬性,那么key將使用property屬性設定的值
var entity = this.get("#autoForm1.entity");//保證json對象內部的參數與后台接受的parameter參數名相同
this.get("#dsProduct") .set("parameter",entity).flushAsync();

//獲得AutoForm中的entity內容
var entity = this.id("recAutoForm").get("entity");
alert(entity.length+" "+entity.width);


7.獲得當前實體對象數據的“產品名稱”
dorado.MessageBox.alert(this.get("#dsProduct.data:#.productName"));


8.對實體對象屬性設值
this.set("#dsProduct.data:#.productName","testValue");


9.通過json對象賦值,清除查詢框內容
this.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 = this.id("dsHeader").getData("#.detail");
datas.each(function(entity){
alert(entity.get("RIGHT_MODE"));
alert(entity.get("RIGHT_ITEM"));
});


//獲取當前選擇的項
var datas = this.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 = this.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 = this.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"
});


24.返回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);

24.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();


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

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

26.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。

27.datagrid列頭換行問題
onRenderHeaderCell 事件中寫
arg.dom.innerHTML="1<br>2<br>3";

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

29.鼠標指針移動到指定的對象上時發生
在控件的onCreateDom()中添加
arg.dom.onmouseover = function(){
//這里面處理
dorado.widget.NotifyTipManager.notify("鼠標移動到我上面時,會自動出現提示信息!");
}

30.鼠標移動到某個控件上讓鼠標指針變成小手
添加style cursor:pointer

31.樹節點的處理(遞歸樹)
------------------------------------------------------------------------------------------------------
/**
* 獲得所有的頂級節點
*/

//根節點,此節點時樹狀列表內部的頂層節點
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;
}
}

------------------------------------------------------------------------------------------------------

32.DataGrid的DataColumn中定義CheckBox
1】設定DataType字段為boolean類型,對應的DataColumn自動為CheckBox;
2】設定DataColumn的renderer屬性為dorado.widget.grid.CheckBoxCellRenderer
3】非Boolean類型CheckBox用法設置
/*
var CellRenderer = $extend(dorado.widget.grid.SubControlCellRenderer,{
createSubControl: function(arg){

//創建單元格內部的DOM元素
return new dorado.widget.CheckBox({
caption: "A類"
});
},

refreshSubControl: function(button,arg){
//當渲染單元格時觸發,在這個事件中可以通過arg.data獲取當前的實體對象

}});

self.set("renderer",new CellRenderer());//最后設置名稱為operation的DataColumn的渲染器為自定義的CellRenderer
*/

/*
var CellRenderer = $extend(dorado.widget.grid.SubControlCellRenderer, {
createSubControl : function(arg) {
//創建單元格內部的DOM元素

if (arg.data.rowType){
//arg.data代表當前的實體對象,可根據實體對象的值動態的調整下列內容的創建
return null;
}

//創建CheckBox
return new dorado.widget.Container(
{ "children":[
{ "$type":"CheckBox", "caption":"A類", "onValue":"A",
"listener":{
"onValueChange":function(self,arg){
//alert(self.get("value"));
}
}
},
{ "$type":"CheckBox", "caption":"B類","onValue":"B",
"listener":{
"onValueChange":function(self,arg){
//alert(self.get("value"));
}
}
},
{ "$type":"CheckBox", "caption":"C類","onValue":"C",
"listener":{
"onValueChange":function(self,arg){
//alert(self.get("value"));
}
}
} ],
"layout":{ "$type":"HBox" }, "height":30
});
},

//當渲染單元格時觸發,在這個事件中可以通過arg.data獲取當前的實體對象
refreshSubControl : function(container, arg) {
var entity = arg.data;//獲取當前行對應的Entity對象
var checkboxs = container.get("children");
checkboxs.each(
function (checkbox){
var caption = checkbox.get("caption");//獲取caption
}
);
}
});

self.set("renderer", new CellRenderer());
arg.processDefault=true;
*/


33.Label內容加粗
style添加font-weight=bold


34.鼠標指針
//獲得鼠標的位置
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);
}


35.調用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);
}


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM