跳转至

自定义按钮API

执行自定义代码按钮在重新设计后,自定义代码脱离了原有的列表与表单代码编写框,定义了一个按钮的自定义代码入口,详细介绍如下。

适用范围

仅对按钮抽象之后在功能按钮页手动新增的运行自定义代码的按钮。

按钮类型 是否适用本文档
系统按钮 不适用
表单设计中拖入的按钮控件 不适用
自定义代码添加的按钮 不适用
功能按钮页面新增的自定义按钮 适用

代码编辑

表单设置 > 功能按钮,新增或编辑运行自定义代码的按钮时,会出现该按钮的代码编辑框。每一个按钮有独立的逻辑代码编辑器。

从表单与列表出点击按钮都是执行此处编写的按钮后台代码,在代码中提供参数判断用户是点击表单详情页的按钮还是点击列表中的按钮。请参考下面的 使用示例学习。

using System;
using System.Collections.Generic;
using System.Text;
using H3;

public class D000183stcdroc0kmech2zsybjpb_btnef1857389509425e8a0e56be108aa538_SmartActionController : H3.SmartForm.SmartActionController
{
    public D000183stcdroc0kmech2zsybjpb_btnef1857389509425e8a0e56be108aa538_SmartActionController(H3.SmartForm.SmartActionRequest request) : base(request)
    {
    }
    protected override void OnSubmit(H3.SmartForm.SmartActionPostValue postValue, H3.SmartForm.SubmitSmartActionResponse response)
    {
        H3.SmartForm.ActionEnvironment actionEnvironment = this.Request.ActionEnvironment;
        //此处判断是从表单详情点击按钮
        if (actionEnvironment == H3.SmartForm.ActionEnvironment.Form) 
        {
            //获取自定义的参数,在前端通过以下代码传递
            // var customData = {};
            // customData["Name"] = "氚云";
            // customData["Code"] = "cy";
            // this.execute(customData); // 调用通用点击按钮执行方法,可以注释掉
            // 接收到的自定义参数示例
            // {
            //   "Name": "氚云",
            //   "Code": "cy"
            // }
            Dictionary<string, object> customData = postValue.Data;
            // 接收到的表单数据示例
            // {
            //     "F0000001": "222",
            //     "D000183skd28mq3geuyoz4r0ycy": [
            //         {
            //             "ObjectId": "3a97ec5f-a07f-44b8-89fd-1e1b5f2ef84a",
            //             "F0000002": "22",
            //             "F0000003": null
            //         }
            //     ],
            //     "F0000004": "",
            //     "F0000005": null,
            //     "ObjectId": "0c4e4461-7584-4e86-9a2a-314408f1d911"
            // }
            Dictionary<string, object> data = postValue.SmartFormPostValue.Data;
            // 返回数据到前端
            response.ReturnData.Add("custom", customData);
            response.ReturnData.Add("data", data);
        }
        //此处判断是从列表工具栏点击按钮
        if (actionEnvironment == H3.SmartForm.ActionEnvironment.View) 
        {
            //获取自定义的参数
            Dictionary<string, object> customData = postValue.Data;
            // 获取列表页选中的数据Id集合
            object objectIds = postValue.ListViewPostValue.Data["ObjectIds"];
            // 添加返回数据到前端
            response.ReturnData.Add("ids", objectIds);
            response.ReturnData.Add("custom", customData);
        }
        return;
        base.OnSubmit(postValue, response);

    }
}

⚠️ 注意

  1. OnSubmit方法中编写该按钮的代码逻辑,语法与表单后台代码一致,
  2. base.OnSubmit不会自动提交this.Request.BizObject,如果需要修改数据需要手动执行更新,
  3. 自定义代码按钮只在查看表单详情页展示,这里只需要考虑表单详情页场景。