氚云--用前端代码删除除开需要部门的子表行数据
场景:一张警示主表,发起警示分解表子流程,带入发起人进行发起,之后加一个发起人的经办节点,在分解表中发起人部门之外的数据不能 出现在任务明细子表中。但是在主表进行子流程带数据到分解表时,不能对部门进行判断带入相应部门的子表数据。
解决:在分解表中获取发起人相关部门,获取子表数据,判断子表中部门是否包含发起人的相关部门信息,先设置数组,储存所有的子表id,以及包含发起人相关部门的子表id,进行两个数组的循环判断,判断后出去所有id数组中包含发起人相关id的值内容,之后使用新数组,传递不包含发起人相关部门的数组数据。
下面代码是进行后端判断,传值到前端
//根据actionName判断当前请求是否是为了获取当前登录人信息 string dq = this.Request.ActivityCode; if(actionName == "GetCurrentLoginUser" && (dq == "Activity74" || dq == "Activity33")) { // string ActivityCode=this.Request.ActivityCode ; string objectidi = this.Request.BizObject["ObjectId"] + string.Empty; string fqr = "SELECT * FROM H_WorkItem where BizObjectId='" + objectidi + "'"; System.Data.DataTable fqrlc = this.Engine.Query.QueryTable(fqr, null); string yh = fqrlc.Rows[0]["Originator"].ToString(); string YH = "SELECT * FROM H_User where ObjectId='" + yh + "'"; System.Data.DataTable yhlc = this.Engine.Query.QueryTable(YH, null); string bm1 = fqrlc.Rows[0]["OriginatorParent"].ToString(); string BM1 = "SELECT * FROM H_Organizationunit where ObjectId='" + bm1 + "'"; System.Data.DataTable bmlc1 = this.Engine.Query.QueryTable(BM1, null); string bm = this.Request.BizObject["OwnerDeptId"] + string.Empty; string BM = "SELECT * FROM H_Organizationunit where ObjectId='" + bm + "'"; System.Data.DataTable bmlc = this.Engine.Query.QueryTable(BM, null); //获取子表的值: H3.DataModel.BizObject[] details = (H3.DataModel.BizObject[]) this.Request.BizObject["D102301Fgdb1i8tixyk8ol1dsnb68wht6"];//子表 string shifou = ""; string zibObjectid = ""; String[] zrbm = null;//责任部门 String[] zib = null;//子表id String[] zibiao = null; String[]zibin = null; //String[]xinn = null; string sjbm = bmlc.Rows[0]["ParentId"].ToString();//当前部门的父部门 string BMsj = "SELECT * FROM H_Organizationunit where ObjectId='" + sjbm + "'"; System.Data.DataTable bmlcsj = this.Engine.Query.QueryTable(BMsj, null); string ssjbm = ""; if(bmlcsj.Rows.Count > 0) { ssjbm = bmlcsj.Rows[0]["ParentId"].ToString(); } string BMssj = "SELECT * FROM H_Organizationunit where ObjectId='" + ssjbm + "'"; // System.Data.DataTable bmlcssj = this.Engine.Query.QueryTable(BMssj, null); // string sssjbm = bmlcssj.Rows[0]["ParentId"].ToString(); if(details != null && details.Length > 0) { // List < string > strList=new List<string>(zrbm); List < string > strList=new List<string>(); List < string > strzib=new List<string>(); List < string > zib2=new List<string>(); foreach(H3.DataModel.BizObject detail in details) { zib2.Add(detail["ObjectId"].ToString()); String[] xuh = (System.String[]) detail["F0000047"];//部门 for(int i = 0;i < xuh.Length; i++) { if(xuh[i].ToString() == bm || xuh[i].ToString() == sjbm || xuh[i].ToString() == ssjbm) {//判断是否当前发起人部门是否等于发起人的部门、上级部门、上上级部门,等于纳入zrbm(责任部门)与zib(子表id)数组中 strList.Add(xuh[i].ToString()); strzib.Add(detail["ObjectId"].ToString()); } //strList.Add(xuh[i].ToString()); } zrbm = strList.ToArray(); // strzib.Add(detail["ObjectId"].ToString()); //子表id zib = strzib.ToArray();//存在相关部门的数据id zrbm = strList.ToArray(); } //获取子表所有循环判断结果 zibiao = zib2.ToArray();//所有子表id List < string > zib3=new List<string>(); //进行判断是否相等:判断子表所有id是否等于具有与发起人有关的子表id,相等就在所有的子表id中,将对应的索引下的值改为空 for(int i = 0;i < zibiao.Length; i++) { for(int j = 0;j < zib.Length; j++) { string d = zibiao[i].ToString(); string c = zib[j].ToString(); if(zibiao[i].ToString() == zib[j].ToString()) { // zibin=zibiao[i].ToString(); //zib3.Add(zibiao[j].ToString()); zibiao[i] = ""; } } } //拿取与发起人无关部门的数据,进行数据传输 List < string > xin=new List<string>(); for(int j = 0;j < zibiao.Length; j++) { if(zibiao[j].ToString() != "") { xin.Add(zibiao[j].ToString()); } } xinn = xin.ToArray(); for(int k = 0;k < xinn.Length; k++) { // string str = "SELECT * FROM i_D102301Fgdb1i8tixyk8ol1dsnb68wht6 where ObjectId='" + xinn[k].ToString() + "'"; // System.Data.DataTable det = this.Engine.Query.QueryTable(str, null); // if(de) { } string str = "DELETE FROM i_D102301Fgdb1i8tixyk8ol1dsnb68wht6 where ObjectId='" + xinn[k].ToString() + "'"; System.Data.DataTable de = this.Engine.Query.QueryTable(str, null); } //zibiao = zib3.ToArray(); } H3.Organization.User user = this.Request.UserContext.User; //获取当前登录用户的用户对象 response.ReturnData = new Dictionary<string, object>();//默认response.ReturnData值为null,所以此处需要初始化 response.ReturnData.Add("UserId", yh);//将当前登录用户的用户Id响应回前端 response.ReturnData.Add("UserName", user.Name); //将当前登录用户的用户姓名响应回前端 response.ReturnData.Add("UnitId", bm);//将当前登录用户的主部门Id响应回前端 response.ReturnData.Add("ZRBM", zrbm);//将当前登录用户的主部门Id响应回前端 response.ReturnData.Add("ZBI", xinn);//将当前登录用户的主部门Id响应回前端 //response.ReturnData.Add("SFBH", shifou);//将当前登录用户的主部门Id响应回前端 response.ReturnData.Add("ZBObjectid", zibObjectid);//将当前登录用户的主部门Id响应回前端 // response.ReturnData.Add("ActivityCode",ActivityCode );//将当前审批节点响应回前端 }
前端代码:在前端展示下删除列数据
OnLoad:function(){ debugger; var parent = this; var enviroment = $.SmartForm.ResponseContext; if( !enviroment.IsCreateMode ) { //PostForm请求后端,actionName为"GetCurrentLoginUser" var result = ""; var UserId = ""; var UserName = ""; var UnitId = ""; var ZBI=""; var ActivityCode =$.SmartForm.ResponseContext.ActivityCode; $.SmartForm.PostForm( "GetCurrentLoginUser", {}, function( data ) { if( data.Errors && data.Errors.length ) { $.IShowError( "错误", JSON.stringify( data.Errors ) );//将后端添加到Errors集合里的异常信息弹出 } else { result = data.ReturnData;//取出后端响应的数据 UserId = result[ "UserId" ];//取出result对象的UserId属性值,并赋值到一个人员单选控件中 UserName = result[ "UserName" ];//取出result对象的UserName属性值,并赋值到一个单行文本控件中 UnitId = result[ "UnitId" ];//取出result对象的UnitId属性值,并赋值到一个部门单选控件中 SFBH=result["SFBH"]; ZBI=result["ZBI"]; // ActivityCode = result[ "ActivityCode" ];//取出result对象的UnitId属性值,并赋值到一个部门单选控件中 } }, function( error ) { $.IShowError( "错误", JSON.stringify( error ) );//将后端未知异常弹出 }, false ); for( var i = 0;i < ZBI.length;i++ ) { $( "#" + ZBI[i] ).remove(); } } },