自定义控件

 用户通过自定义视图组件可以自己定义自己的控件。

自定义控件示例:

1、新建一个自定义视图组件

  选择对应的业务组件BC,自定义HTC路径及名称(或JS对象类名称)选项处手动填写UCML.UL

image.png

2、在BPO上添加一个JScript操作函数

  前提是BPO上引用好相应的BC和VC,然后选中BPO右键添加一个JScript操作函数,如下图,无需设置函数名称,直接写代码:

image.png

下文代码为自定义一个新闻列表控件,输出无序列表(ul),代码如下:

//1.定义类对象
UCML.UL = function (id) {
    this.dd = "XM";   //定义显示的字段名称
    UCML.UL.superclass.constructor.call(this, id); //必须调用父类初始化
}

//2.继承父类
UCML.extend(UCML.UL, UCML.Applet, {
    haveMenu: true,
         onRender: function () {
         //绘制控件
        this.ok();
    }, ok: function () {
        this.el.html("新闻标题");
    }, 
    loadData: function () {
        //获得数据,绘制数据显示方式,this.dataTable为当前BCBase
        for (var i = 0; i < this.dataTable.getRecordCount(); i++) {
            this.dataTable.SetIndexNoEvent(i);
            //获得字段的值并显示在li中
            this.el.append("<li>" + this.dataTable.getFieldValue(this.dd) + "</li>");
        }
    }, bindEvents: function () {
        //绑定控件事件
        UCML.Applet.superclass.bindEvents.call(this);
        this.dataTable.on("onLoad", this.loadData, this);
    },
    onMenuReady: function () {
        var menu = new UCML.Menu();
        menu.addSeparator();
        menu.addMenuItem("cmd_OutExcel", "导出数据");
        menu.addMenuItem("cmd_AllOutExcel", "导出全部");
        menu.addMenuItem("cmd_Refresh", "刷新数据");
        menu.addMenuItem("cmd_ConfigColumns", "列配置");
        this.menu = menu;
    }
});

3、生成编译BPO

页面效果:

image.png

评论

暂无评论!

发表评论