氚云学习1——表单
首先,當打開一個氚云應用的表單,其地址如下。
其中,id為appcode,標示應用名,每一個氚云的應用都有唯一的id
code為schmecode,標示一個表單名,相當于整個表單的實體類,而code用于標示這個表單的唯一標示。
https://www.h3yun.com/home.html#/app?id=czl93lpxl24nxaawwywe5ct66&code=A6714cc7929324c618f4a0382cf9fbf44&BizObjectId=
此外,還有如下的數據名:
BizObject:為每個表單的其中一行數據
BizObjectId:為每個表單的其中一行數據的唯一標識
ActionName:表單提交的標識字段,即表單上按鈕等的活動,在后端代碼中,有一個OnSubmit方法,所有提交的活動,都會在這個方法呈現。如:當ActionName==Submit,那么就表示活動類型為提交數據
ActivityCode:標識當前流程進行到了哪一步,(這是由于在不同流程的節點上,ActionName提交的請求可能相同,如都是Submit類型的活動。但所處節點不同,此時就需要再次使用ActivityCode==“xxx”來判斷節點)
Engine對象
用于管理、調用、操作與企業應用相關聯的表單、流程、組織、權限、消息、提醒、數據字典等
表單
前端
| 加載事件 | OnLoad | 對控件初始化,當新增一個表單數據,為其做初始賦值,是最先觸發的事件 |
| 按鈕事件 | OnLoadActions | 點擊按鈕后觸發的事件,觸發在OnLoad之后 |
| 提交校驗 | OnValidate | 填好數據后提交時觸發,用于校驗表單中所填數據是否合法 |
| 提交前事件 | BeforeSubmit | 觸發在OnValidate之后,在將數據提交到后端之前還需要做的事情 |
| 提交后事件 | AfterSubmit | 觸發在BeforeSubmit之后,數據已經在后端處理完畢后還要做的事情 |
關于控件的接口
GetValue() :讀取控件值
GetText():讀取控件文本內容
SetValue():設置控件的值
BindChange(key,function()):綁定控件值變化事件,key是定義的唯一的方法名
UnBindChange(key):解除綁定控件值變化事件,key是定義的唯一的方法名
SetReadonly(true/false):設置頁面是否只讀
SetVisible(true/false):設置可見屬性
此外,獲取人員/部門控件用GetUnitIDs(),而不能用getvalue;下拉框、單選框、多選框清空選項用ClearItems(),添加選項用AddItem(“value”);字表的GetCellManager以后,不能使用GetText和AddItem
用法: this.控件編碼.方法();
例如:
一些公共接口
ajax:異步請求接口,比如輸入數據請求后臺處理后返回結果到頁面上,經常和BindChange一起使用
$.SmartForm.PostForm(“actionName”,data,callBack,errorBack,async);
callBack:成功后的回調函數
errorBack:錯誤回調函數
async:是否異步,true或false
彈框提示方法 $.IShowWarn(Info);
Info:顯示的消息
打開窗口方法:
在當前表單的基礎上打開另一個表單,即打開一個表單的同時打開另一個表單
$.IShowForm(SchemaCode,objectId,checkIsChange);
SchemaCode:表單編碼,在本文剛開始時說了表單編碼怎么找,即schmecode。
objectId:表單數據ID
checkIsChange:關閉時是否感知變化
快捷鍵:f12 進行調試 f9打斷點 ,或者在想要斷點的地方加一行debugger,然后右鍵檢查進入調試
后端
其實就是表單的一個類,包含3個方法,
| 構造方法 | |
| OnLoad方法 | 表單在加載的時候同時觸發前后端代碼,為控件賦初始值 |
| OnSubmit方法 | 表單提交時會進入OnSubmit |
1.獲取表單提交過來的數據
方法1:
string value=this.Request.BizObject[“F000001”]+string.empty;
方法2:
string value2=PostValue.Data[“F000001”]+string.empty;
因為PostValue.Data中數據是Object類型,因此要進行數據的類型轉換。
2.獲取表單中的對象
可以獲取到其他表單中的對象,實現在本表單的操作影響另一個表單。
獲取BizObject對象
H3.DataModel.BizObject.Load(This.Request.UserId, //操作對象的人this.Engine, //引擎對象"schemaCode" //schmecode"BizObjectId" //對象IDfalse); //固定值false先創建一個分組,添加倆個表單,一個表單是產品,BizObject包括產品名稱和數量,另一個表單是入庫,BizObject包括產品名稱和入庫數量,并將倆個表單關聯
在入庫表單的Onsubmit方法中添加如下代碼
案例
不同角色看到不同內容
在權限管理中新建角色:金額查看,并添加允許的人
//獲取用戶所有角色 H3.Organization.OrgRole[] roles = this.Request.Engine.Organization.GetUserRoles(this.Request.UserContext.UserId,true() ; //尋找相應角色 bool flag=false; foreach(H3.Organization.OrgRole item in roles) {if(item.Name=="金額查看"){flag=true;}response.ReturnData["menoy"].visible=flag;//設置可讀權限 }不同角色看到不同的下拉框選項
同樣,需要權限管理,如添加權限:男性愛好,并加入相應人員
如果,有這個權限,多選框選項就是 打游戲,吃飯,睡覺
如果沒有這個權限,選項就是化妝,逛街,自拍
默認復選框數據為有權限時的情況,如果沒有權限,則在打開時修改復選框內容
后端部分,在OnLoad中
var flag=$.SmartForm.ResponseContext.Massage; if(flag=="Flase"){//如果沒有權限,修改復選框選項this.F0000001.ClearItems();//修改之前先將復選框清除this.F0000001.AddItem("化妝");this.F0000001.AddItem("逛街");this.F0000001.AddItem("自拍"); }若控件權限為不可寫,但實際上卻用代碼setvalue為控件賦初始值,這個值雖然會在表單詳情界面上顯示,但實際上卻進入不了數據庫,在表單條目上顯示不出來
如果真的想要賦初始值,想要在后端代碼中OnSubmit方法使用:
this.Request.BizObject[“F000001”]=postValue.Data[“F000001”]+string.Empty;//放在base方法前面
此時,雖然仍然不能寫,但是初始值卻可以被上傳至數據庫顯示在表單條目中
總結
- 上一篇: php_flag .htaccess,A
- 下一篇: html加载js文件失败,firefox