氚云学习A

文章展示了前端和后端交互的代码示例,包括前端的弹框、提交校验、代码格式化,以及后端的数据操作如更新、删除、关联表单处理。同时,提到了前端和后端在处理列表、表单验证、权限控制等方面的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Shift+Alt+F//代码排序 右键==>Format Code

-----前端弹框 AfterSubmit-----

if(action=="F0000003")
{
   $.IShowSuccess("点击了F0000003");
}

if(action=="F0000001")
{
   $.IShowWarn("点击了F0000001");
}

if(action=="F0000002")
{
   $.IShowError("点击了F0000002");
}

https://www.h3yun.com/home.html#/app?id=D101801b24008b18b364c549654f839920b9f3e&code=D101801ZhiWeiinformationizedSystem&BizObjectId=9dceb34a-9218-4b17-b070-da9f28fab92f

//不带objectID的弹出新增 带了的弹出编辑

if(action=="F0000004")
{
  $.IShowForm("D101801b24008b18b364c549654f839920b9f3","",false);
}


if(action=="F0000005")
{
  $.IShowForm("D101801b24008b18b364c549654f839920b9f3","9dceb34a-9218-4b17-b070-da9f28fab92f",false);
}


-----前端提交校验 OnValidate-----

return confirm("是否提交?");


列表设计==>添加按钮==>前端代码

if(actionCode=="F0000001")
{
  $.IShowForm("D101801b24008b18b364c549654f839920b9f3","",false);
}


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

-----后端-----


response.Infos.Add("提交数据不合法");  //可以阻止表单的提交
response.Error.Add("提交数据不合法");  //可以阻止表单的提交
 

A、关联表单里存的就是关联的表单的ObjectId

UserName 学生      F0000001
Gender 性别    F0000002
student关联学生 F0000003    关联表单

-----后端 OnSubmit-----  改变关联表里的信息,改掉或删除原表单的信息
 XX 关联表单ID  Age要修改的控件

H3.DataModel.BizObject biz=H3.DataModel.BizObject.Load(H3.Organization.User.SystemUserId,this.Engine,"D101801968659a8ee534b8e9e3be1b540f4c9b1",this.Request.BizObject["XX"]+string.Empty,false);
        biz["Age"] = this.Request.BizObject["Age"]+string.Empty;
        biz.Update();
        base.OnSubmit(actionName, postValue, response);


//biz.Remove();


-----------------------------------
companyName 公司名称 F0000001
adders        公司地址 F0000002
userName    联系人名 F0000003
userPhone   联系人电话 F0000004
kehu        客户       F0000005 关联表单


------后端-----    this.Request.UserContext.UserId  当前操作人的姓名

//把新增联系人的信息,赋值到另一个表
        if(actionName == "Submit")
        {
            H3.DataModel.BizObjectSchema obj1 = this.Engine.BizObjectManager.GetPublishedSchema("D101801df032a33c3bd4434950d1ebf191da2f1");
            H3.DataModel.BizObject obj2 = new H3.DataModel.BizObject(this.Engine, obj1, this.Request.UserContext.UserId);
            obj2["KHName"] = this.Request.BizObject["KHName"] + string.Empty;
            obj2["Phone"] = this.Request.BizObject["Phone"] + string.Empty;
            obj2["GSName"] = this.Request.BizObject["GSName"] + string.Empty;
            obj2["GSDZ"] = this.Request.BizObject["GSDZ"] + string.Empty;
            obj2["KH"] = this.Request.BizObjectId;
            obj2.Status = H3.DataModel.BizObjectStatus.Effective;
            obj2.Create();
        }

        //删掉联系人信息的时候,另一个表的数据也自动删除
        if(actionName == "Remove")
        {
            string Sql = string.Format("delete from I_D101801df032a33c3bd4434950d1ebf191da2f1 where KH='{0}'", this.Request.BizObjectId);
            this.Engine.Query.QueryTable(Sql,null);
        }

-----------------------------
获取跟进的对象
把子表对象获取到
往子表对象里添加一行子表
赋值给客户(主表)
掉用Update


staff      跟进人    单选人员 
date     跟进时间

if(actionName == "Submit")
        {
            //获取要插入的目标对象
            H3.DataModel.BizObject biz1=H3.DataModel.BizObject.Load(this.Request.UserContext.UserId,this.Engine,"D101801942a6bc98c58457e82d3fb6911aaa048",this.Request.BizObject["XX"]+string.Empty,false);   
            //找到子表,找到所有子表
            H3.DataModel.BizObject[] biz2 = (H3.DataModel.BizObject[])biz1["D101801F1df4dae9782c4c4580d56b2138566c07"];
            //放到List表单里面去
            List <H3.DataModel.BizObject> childList=new List<H3.DataModel.BizObject>();
            if(biz2 != null)
            {
                childList.AddRange(biz2);//先把原来的子表存起来
            }
            //创建待加入子表的对象
            H3.DataModel.BizObjectSchema schema = this.Engine.BizObjectManager.GetPublishedSchema("D101801F1df4dae9782c4c4580d56b2138566c07");
            H3.DataModel.BizObject childBiz = new H3.DataModel.BizObject(this.Engine, schema, this.Request.UserContext.UserId);
            childBiz["staff"] = this.Request.BizObject["staff"] + string.Empty;
            childBiz["data"] = this.Request.BizObject["data"] + string.Empty;
            childList.Add(childBiz);
            biz1["D101801F1df4dae9782c4c4580d56b2138566c07"] = childList.ToArray();
            biz1.Update();
        }

-----列表设计 后端代码------

例题一:获取选中的行  和 复制一行
 string[] objectIds=(string[])postValue.Data["ObjectIds"];
 if(objectIds==null || objectIds.Length==0)
{
 response.Message="请选择数据行";
 return;
}

//给选中的行年龄+1岁
if(actionName=="自定义按钮编号F0000001")
{
foreach(string item in objectIds)
{
 H3.DataModel.BizObject biz=H3.DataModel.BizObject.Load(this.Request.UserContext.UserId,this.Engine,"要操作表的状态栏中的id",item,false);

biz["Age"]=double.Parse("0"+biz["Age"])+1;
biz.Update();
}
}


if(actionName="自定义按钮编号")
{
 foreach(string item in objectIds)
{
 H3.DataModel.BizObject biz=H3.DataModel.BizObject.Load(this.Request.UserContext.UserId,this.Engine,"要操作表的状态栏中的id",

 H3.DataModel.BizObject newbiz=new H3.DataModel.BizObject(this.Engine,this.Engine,BizObjectManager.GetPublishedShedSchema("要操作表的状态栏中的id"),this.Request.UserContext.UserId);

newbiz["userName"]=biz["userName"];
newbiz["Age"]=biz["Age"];
newbiz["Gender"]=biz["Gender"];
....
newbiz.Status=H3.DataModel.BizObjectStatus.Effective;
newbiz.Create();


}
}


----------必须放在列表设计里的 base.OnLoad(response)后面---------------------
例题二:更改字段颜色

if(isFormControl !="1" && isFormControl !="true")
{
 foreach(Dictionary<string,object> data in response.ReturnData)
{
 if(data["F0000001"]+string.Empty=="男")
{
 data["F0000001"]=new H3.SmartForm.ListViewCustomCell(data["F0000001"]==null ? "--" : data["F0000001"].ToString(),H3.SmartForm.Color.Blue);
}else{
data["F0000001"]=new H3.SmartForm.ListViewCustomCell(data["F0000001"]==null ? "--" : data["F0000001"].ToString(),H3.SmartForm.Color.Red);
}
}
}

例题三:自定义过滤条件

protected override void OnInit(H3.SmartForm.LoadListViewResponse response)
{
 H3.Data.Filter.Filter filter=new H3.Data.Filter.Filter();//构建过滤器
 H3.Data.Filter.And andMatcher=new H3.Data.Filter.And();  //构造And匹配器
 andMatcher.Add(new H3.Data.Filter.ItemMatcher("控件编号例:Gender",H3.Data.ComparisonOperatorType.Equal,"男"));//添加查询条件
 filter.Matcher=andMatcher;
 this.Request.Filter=filter;
 base.OnInit(response);
}


例题四:修改列名称

protected override void OnInit(H3.SmartForm.LoadListViewResponse response)
{
 Dictionary <string, H3.SmartForm.ListViewColumn> columns=new Dictionary<string,H3.SmartForm.ListViewColumn>();
 foreach(string key in response.Columns.Keys)
{
 if(key=="F0000001")//判断当前编码是不是F0000001
{
 //将F0000001列的列名称改成 供应商信息
H3.SmartForm.ListViewColumn newCol=new H3.SmartForm.ListViewColumn(
 "F0000001"//列编码(对应控件编码) 
 "供应商信息"//列名称
 response.Columns[key].Visible,
 response.Columns[key].Sortable,
 response.Columns[key].Url,
 response.Columns[key].Align,
 response.Columns[key].IsLabel,
 response.Columns[key].ShowMode
);
columns.Add("userName",newCol);
}else{
columns.Add(key,response.Columns[key]);
}
}
response.Columns=columns;
}


//例题五:修改列排序
 protected override void OnInit(H3.SmartForm.LoadListViewRespons response)
{
 base.OnInit(response);
 response.SortBy="F0000003";//设置列表默认根据F0000003控件进行排序
 //response.SortDirection=H3.Data.Filter.SortDirection.Ascending;//正序排序
 response.SortDirection=H3.Data.Filter.SortDirection.Descending;//倒序排序
}


例题六:数据都添完了,突然要求多加一个价格总和   完成后记得注释代码或者删掉代码
列表设计==>后端代码==>base.OnLoad(response);上面写代码

string sql="update I_当前表单地址栏的ID set sumMoney=prodPrice*prodNunb";
this.Engine.Query.QueryTable(sql,null);
 

后端OnLoad里中的常用操作:

this.Request.BizObject("F0000004")="A;B";    多选赋默认值

this.Request.BizObject("F0000001")="张三";    赋默认值

base.OnLoad(response);

response.ReturnData["F0000003"].Editable=false;    不可编辑

response.ReturnData["F0000003"].Visible=false;  隐藏起来,不可见

------------------------------------------------------------
案例一:
//权限设置,如果你是属于金额查看组的,才能看见金额,否则隐藏起来

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=="金额查看")  
   {
    falg=true;
   }
}
response.ReturnData["F0000005"].Visible=falg;  

------------------------------------------------------------
案例二:
//不同的角色看到不同的数据

------后端代码-----

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=="金额查看")  
   {
    falg=true;
   }
}
response.Message=falg +string.Empty;

-----前端代码-----

var flag=$.SmartForm.ResponseContext.Message;
debugger;                //调试、断点
  if(flag=="false")
  {
    this.F0000003.ClearItems();    //清除原来数据
    this.F0000003.AddItem("一");    //给多选按钮赋值
    this.F0000003.AddItem("二");
    this.F0000003.AddItem("三");
  }

------------------------------------------------------------
案例三:
描述:如果设置某个字段为不可写,然后用代码给他设置了值,实际上是不会保存到数据库里面去的,
      必须手动把PostValue里面的值赋值到this.Request.BizObject里去
//在OnSubmit里编写

-----后端代码-----

this.Request.BizObject["F0000001"]=postValue.Data["F0000001"] + string.Empty;

-----前端代码-----

this.F0000001.SetValue("张三");

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

后端总结:

1、设置初始值是放在base.OnLoad前面

2、设置可见可写放在base.OnLoad后面

3、多选表单用:隔开

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

前端常用方法:

a、Var dataText=this.F0000001.GetText();         获取文本值

b、Var dataValue=this.F0000001.FetValue();     获取数据库里的值,通常和a差不多

c、this.F0000001.SetReadonly(true);        只读

d、this.F0000001.SetVisible(false);        隐藏,不可见

e、this.F0000001.AddItem("新加进的");        给下拉框赋值

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

前端总结:

1、获取人员/部门控件值用GetUnitIDs

2、下拉框、单选框、多选框清空选项用Clearltems(),

3、添加选项用AddItem(Value)子表的GetCellManager以后获得的对象,不能使用GetText,和AddItem
 

-----前端-----

1、this.子表编号.ClearRows(); 清空子表行

2、添加子表行
    var controlManager = this.子表编号;//获取子表控件对象
        var subObjectId = $.IGuid();  //创建行ID
          controlManager.AddRow( subObjectId,
     {
              "子表编号.编号": "张三",
        })

3、更新子表行 把数据全部变成张三
    var zibiao=this.子表编号.GetValue();
    for(var i=0,i<zibiao.length;i++)
    {    
    var currentRowId = this.子表编号.GetValue()[0].ObjectId; //第一行子表ID   [0]是第一行                          
    this.子表编号.UpdateRow(currentRowId,{"子表编号.编号": "张三",});
    }

4、定义一个子表数据发生改变时弹窗
    var that=this;
    this.子表编号.BindChange('key',function(res){
    if(ref[0].DataFieId=="子表编号.编号"){
        var objectid=res[0].ObjectId;
        var cellObj=that.子表编号.GetCellManager(objectid,"子表编号,编号")    //变灰
        cellObj.SetReadonly(true);
    }    
      });

案例一:出库数量不能大于库存数量

表单提交验证里  MIN(子表.剩余库存数量<0)            子表.剩余库存数量<0     


案例二:子表数据的重复校验,主表自带属性里可以设置

using System.Data;
-----后端代码-----OnSubmit
H3.DataModel.BizObject[] child=(H3.DataModel.BizObject[])this.Request.BizObject["子表编号"];
foreach(H3.DataModel.BizObject item in child)
{
string repStr=string.Format("select * from 子表编号 where 编号='{0}'",item["编号"]+string.Empty);
DataTable.repDt=this.Engine.Query.QueryTable(repStr,null);
if(repDt!=null && repDt.Rows.Count>0)
{
response.Info.Add("子表数据提交重复");
}
}

案例三:用业务规则向一个目标表单的子表添加数据

首先把子表的行清空 this.子表编号.ClearRows(); 
表单设置==>业务规则==>切换到高级模式==>数据生效时
INSERT(任务发布子表.子表,任务发布.子表.ParentObjectId,关联表单,任务发布.提交人,创建人,任务发布.子表.提交时间,创建时间)
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值