首页 » 技术分享 » 氚云专业版

氚云专业版

 

之前的文章写是氚云的基础版,但由于基础版确实是比较弱一点,如果你想要变得更强,那么只需升级到专业版即可,微笑脸。
目前氚云的专业版是不对外试用的,反正我和本地的钉钉经销专员沟通了好久,答复都是不对外进行试用。我最后是采取了一些其他的方式吧,碰到了好人,总归是能用氚云的专业版了。
所以如果你想真的想用这个氚云的话,不建议和当地钉钉的第三方沟通,建议直接和氚云联系,可能会好一些,因为这牵扯到客源什么的。
好了,废话就到这里。


工作台进入到氚云之后,初始界面是和基础版没有区别的。
在这里插入图片描述

氚云的核心主要是这么几块功能:表单、报表、列表设计、流程设计。

但因为我比较菜哦,只简单介绍一下表单,重点是表单的前后台。

我做一个前后台交互的ajax来演示,两个表单,一个表单做姓名、年龄字段的存储,另一个表单做姓名,年龄通过ajax到后台,从前一个表单的数据里查询出来,自动补充到第二个表单里。
这里插一句,所有第三方应用的数据都是存在阿里的服务器,所以数据库的设计配置什么的不用我们管,我们只管用就好了。

新建表单

在这里插入图片描述
这里是和基础版没什么区别的。

但是我们需要注意的是:

①“表单属性”的“表单编码”,这个就是数据库对应的表名,最好找个地方记一下,当然不记也没关系,后边还有别的方法可以找到。
②随便建两个控件,控件名可以直接用初始化,也可以自定义,但后期不能再修改了。

姓名用单行文本控件、性别用下拉框控件,性别控件的数据来源设为自定义,因为只有男女嘛。要是其他性别或者性别不明的也没问题,可以联系管理员给你单独开一个嘛,没啥问题。
在这里插入图片描述
重命名表单名为测试表单,然后点击一下保存。
然后我们就能看到“氚云专业版”的“专业”之处了——“后端代码”、“前端代码”。
在这里插入图片描述
点开看了一下,后端是封装的java代码,前端就是只写js,css是固定的,改不了,标签就是那些控件,托拉拽搞定。

后面再详细讲代码。

因为这个表单我们就光做数据的存储,代码不用写,就这样放着就行。
然后新增几条数据。小明小刚的性别是男,小红小芳的性别是女。
在这里插入图片描述
再新建一个表单,单行文本的姓名,下拉框的性别,性别的数据来源为“自定义”,表单叫测试表单2。
在这里插入图片描述
那我们要实现的就是,输入姓名的时候,把性别自动填充到下拉框里,比如你写了小明的名字,性别就只能选男的。

我把代码拿出来

先是前台的代码:

/* 控件接口说明:
 * 1. 读取控件: this.***,*号输入控件编码;
 * 2. 读取控件的值: this.***.GetValue();
 * 3. 设置控件的值: this.***.SetValue(???);
 * 4. 绑定控件值变化事件: this.***.BindChange(key,function(){}),key是定义唯一的方法名;
 * 5. 解除控件值变化事件: this.***.UnbindChange(key);
 * 6. CheckboxList、DropDownList、RadioButtonList: $.***.AddItem(value,text),$.***.ClearItems();
 */
/* 公共接口:
 * 1. ajax:$.SmartForm.PostForm(actionName,data,callBack,errorBack,async),
 *          actionName:提交的ActionName;data:提交后台的数据;callback:回调函数;errorBack:错误回调函数;async:是否异步;
 * 2. 打开表单:$.IShowForm(schemaCode, objectId, checkIsChange),
 *          schemaCode:表单编码;objectId;表单数据Id;checkIsChange:关闭时,是否感知变化;
 * 3. 定位接口:$.ILocation();
 */

// 表单插件代码
$.extend($.JForm,{
    // 加载事件
    OnLoad:function(){
        var tab = this;
        this.F0000001.BindChange( "key", function() {
            var name = tab.F0000001.GetValue();
            var par = { name: name };
             $.SmartForm.PostForm( "name", par, function( res ) {
                //console.log(res.Message);
                if( res.Successful == true ) {
                    tab.F0000002.ClearItems();//清空
                    var storeNgendameList = [];
                    gend = res.ReturnData.gend;
                    //渲染下拉列表
                    for( var i = 0;i < gend.length;i++ ) {
                        tab.F0000002.AddItem( gend[ i ] );
                    }
                }
            },
                function( err ) {
                    $.IShowError( "错误" + err );
                }, false );
        });
    },

    // 按钮事件
    OnLoadActions:function(actions){
    },
    // 提交校验
    OnValidate:function(actionControl){
        return true;
    },
    // 提交前事件
    BeforeSubmit:function(action, postValue){
    },
    // 提交后事件
    AfterSubmit:function(action, responseValue){
    }
});

这就是前台的代码了,正常新建一个表单之后, OnLoad:function(){}这个方法里是空的,我就把ajax写在这里边儿。
简单介绍一下氚云的Ajax方法:
$.SmartForm.PostForm(actionName,data,callBack,errorBack,async);
参数说明:
actionName:提交的ActionName,我这里就是name;
data:提交后台的数据,我这里是par,要求是key value 形式的;
callback:回调函数; errorBack:错误回调函数; async:是否异步.
附上他们的示例:

var paramData = { Phone: telephone };
        $.SmartForm.PostForm("DuplicateChecking",paramData,
              function (data) {
                  var flag = data.Successful;
                  if (!flag) { $.IShowWarn(data.Errors[0]); }
              },
              function(data){ $.IShowWarn(data.Errors); },
              false);

接下来是后台代码:

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

public class D001374a384f22784b144718ecb8c815b836d55: H3.SmartForm.SmartFormController
{
    public D001374a384f22784b144718ecb8c815b836d55(H3.SmartForm.SmartFormRequest request): base(request)
    {
    }

    protected override void OnLoad(H3.SmartForm.LoadSmartFormResponse response)
    {
        base.OnLoad(response);
    }

    protected override void OnSubmit(string actionName, H3.SmartForm.SmartFormPostValue postValue, H3.SmartForm.SubmitSmartFormResponse response)
    {
        //actionName 和ajax的actionName值对应起来
        if(actionName == "name")
        {
            string  name = this.Request["name"] + string.Empty;
            //手写sql语句
            string  mysql = "SELECT F0000002 FROM I_D0013744e92c4a483dc4102a09ff90707e39401 where F0000001 = '" + name + "'";
            //执行sql语句,返回结果是个DataTable 对象
            System.Data.DataTable gender = this.Request.Engine.Query.QueryTable(mysql, null);

            List < string > gend = new List<string>();
            for(int i = 0;i < gender.Rows.Count; i++)
            {
                string gen = gender.Rows[i]["F0000002"].ToString();
                gend.Add(gen);
            }
            response.Message = "查询性别";
            ///声明response.ReturnData
            response.ReturnData = new Dictionary<string, object>();
            ///添加到response.ReturnData中
            response.ReturnData.Add("gend", gend);
        }

        base.OnSubmit(actionName, postValue, response);
    }
}

我主要讲一下那个手写的SQL语句。
string mysql = “SELECT F0000002 FROM I_D0013744e92c4a483dc4102a09ff90707e39401 where F0000001 = '” + name + “’”;
F0000002是控件编码,就是初始化的时候给一个,也可以自己改的那个
I_D0013744e92c4a483dc4102a09ff90707e39401是表名,I_+完整的表单编码

注意:

如果之前没把表单编码记下来的话,现在回去设计表单,找到的那个表单编码是不对的,它短。
这个时候要这样,进到氚云的右上角,“在浏览器中打开”。
在这里插入图片描述

地址栏的ID的参数 D001374a384f22784b144718ecb8c815b836d55,这个一串儿才是对的,在前面拼接上I_就是表名了。
在这里插入图片描述

如果你不确定这个表名对不对的话,还有个检验的方法:

新建一个报表,“自定义SQL”,把SQL语句放进去
在这里插入图片描述
然后点击一下“校验”,“校验成功”就说明没问题,
在这里插入图片描述
有问题就会和下图似的报错。
在这里插入图片描述
其实报表也有前后台代码,但是因为那个和表单又不一回事儿,我也没有再鼓捣,以后接触了再写吧。
另外附上氚云官方的 开发者手册

好了,专业版就是这样的,可以写代码,前后台交互,数据库查询,比基础版强多了,但到底值不值,要根据自己的情况来决定。

转载自原文链接, 如需删除请联系管理员。

原文链接:氚云专业版,转载请注明来源!

1