氚雲平台更新表單子表數據方法


1、更新子表數據
    /**
     * 此方法更新子表數據:注意:必須放在提交后面,否則不會生效
     * schemaCode 控件編碼,objectid 數據ID,schemaCodeList 需要更新的子表數據ID,ControlCode 需要更新的子表控制編碼,controlValue 需要更新的子表控件值
     */
    protected void UpdateSchemaList(string schemaCode, string objectid, string schemaCodeList, string ControlCode, string controlValue)
    {
        H3.DataModel.BizObject masterBo = H3.DataModel.BizObject.Load(this.Request.UserContext.UserId, this.Request.Engine, schemaCode, objectid, false);                                             //Load出要修改數據的主表業務對象
        H3.DataModel.BizObjectSchema childSchema = masterBo.Schema.GetChildSchema(schemaCodeList);	//獲取子表結構體對象
        List < H3.DataModel.BizObject > newChildBoList = new List<H3.DataModel.BizObject>();	    //定義新的子表數據集合

        H3.DataModel.BizObject[] childBoArray = (H3.DataModel.BizObject[]) masterBo[schemaCodeList];//獲取子表內已有數據
        if(childBoArray != null && childBoArray.Length > 0)
        {
            foreach(H3.DataModel.BizObject itemBo in childBoArray)
            {
                itemBo[ControlCode] = controlValue;
                newChildBoList.Add(itemBo); //將子表內已有數據循環添加到新的子表數據集合里
            }
        }
        masterBo[schemaCodeList] = newChildBoList.ToArray();	//將新的子表數據集合賦值到子表控
        masterBo.Update();  //修改主表業務對象,系統會自動識別出上面子表數據被修改了,執行完Update方法,新的子表數據就會被保存到數據庫
    }
2、創建數據並發起流程
    /**
     * 此方法用於子表數據發起子流程
     * schemaCode 需要創建數據的表單編碼,子表數據
     */
    protected void test(string schemaCode, H3.DataModel.BizObject itemBo)
    {
        H3.DataModel.BizObjectSchema  schema = this.Engine.BizObjectManager.GetPublishedSchema(schemaCode);
        H3.DataModel.BizObject  bo = new H3.DataModel.BizObject(this.Request.Engine, schema, this.Request.UserContext.UserId);
        bo["Department"] = this.Request["Department"];              //所屬部門
        //bo.Status = H3.DataModel.BizObjectStatus.Effective; //設置狀態為有效

        string instanceId = System.Guid.NewGuid().ToString();
        if(string.IsNullOrEmpty(bo.WorkflowInstanceId))
            bo.WorkflowInstanceId = instanceId;
        bo.Create();    //創建

        H3.Workflow.Instance.WorkflowInstance wfInstance = this.Request.Engine.WorkflowInstanceManager.GetWorkflowInstance(bo.WorkflowInstanceId);
        if(wfInstance == null)
        {
            //啟動流程
            string workItemID = string.Empty;
            string errorMsg = string.Empty;
            H3.Workflow.Template.WorkflowTemplate wfTemp = this.Request.Engine.WorkflowTemplateManager.GetDefaultWorkflow(bo.Schema.SchemaCode);
            this.Request.Engine.Interactor.OriginateInstance(this.Request.UserContext.UserId, bo.Schema.SchemaCode,
                wfTemp.WorkflowVersion, bo.ObjectId, bo.WorkflowInstanceId, H3.Workflow.WorkItem.AccessMethod.Web,
                true, string.Empty, true, out workItemID, out errorMsg);
        }//第七個參數 false/true 為是否提交流程操作
    }


免責聲明!

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



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