Dorado 7 : 19.3.1.1 复制视图并添加控件

在本节中我们在表格最前方增加一列,在列的单元格中增加一个重置密码按钮,未修改过密码的员工重置密码按钮状态为不可用。已经修改过密码的员工重置密码按钮可用,点击重置密码按钮后,将员工密码重置为123456。

 

步骤1:拷贝视图并修改名称

将 com.bstek.dorado.sample.standardlesson.middle.base目录下的 EmployeeManageForDropDown.view.xml拷贝到当前目录并重命名为 EmployeeManageForCustomRender.view.xml。

 

步骤2:修改DataType配置

由于在下一步中会在表格中增加临时操作列,而表格和DataType是存在关联关系的,因此我们需要在SlEmployee这个DataType中新增一个PropertyDef,设置PropertyDef属性如下:

属性说明
nameoperation字段的名称
submittablefalse该属性中的内容默认情况是否需要向服务端提交

由于operation为临时字段,因此此字段的值不需要服务端提交。

 

步骤3:修改DataGrid配置

鼠标选中【datagridEmployee】,设置其属性如下:

属性说明
dynaRowHeighttrueDataColumn支持动态行高

为其添加一个DataColumn,拖动新增的DataColumn到最上方,设置属性如下:

属性说明
nameoperationDataColumn的属性名
caption重置密码DataColumn的显示标题
aligncenterDataColumn对齐方式
width75DataColumn的宽度

如下图所示:

 

步骤4:为DataGrid绑定事件

在列中渲染按钮,我们目前采用的是利用Grid自身提供的CellRenderer处理机制,定义自己的CellRenderer,并与相关的DataColumn绑定,这样DataColumn就会以你自定义的CellRenderer的渲染机制实现单元格内容的渲染(要求对DHTML有一定了解)

基本代码为:

var OperationCellRenderer = $extend(dorado.widget.grid.SubControlCellRenderer, {
    createSubControl: function(arg) {
        //创建单元格内部的DOM元素
    },
     
    refreshSubControl: function(button, arg) {
        //当渲染单元格时触发,在这个事件中可以通过arg.data获取当前的实体对象
    }
});
 
self.set("#operation.renderer", new OperationCellRenderer());//最后设置名称为operation的DataColumn的渲染器为自定义的OperationCellRenderer

接下来我们为【datagridEmployee】绑定onCreate事件,在事件编辑区中输入如下代码:

var OperationCellRenderer = $extend(dorado.widget.grid.SubControlCellRenderer,
{
    createSubControl : function(arg) {
        if (arg.data.rowType)
            return null;
        //返回按钮对象并为按钮对象绑定onClick事件
        return new dorado.widget.Button({
            onClick : function(self) {
                //获取当前员工对象
                var entity = arg.data;
                //在点击重置按钮后,将当前员工的密码设置为123456并保存
                entity.set("password","123456");
                view.get("#updateactionSave").execute(function(){
                    dorado.widget.NotifyTipManager.notify(entity
                        .get("employeeName")+ "的密码已经重置!");
                })
            }
        });
    },
    refreshSubControl : function(button, arg) {
        var password = arg.data.get("password");
        //设置按钮的标题,假如员工密码为默认值则按钮显示未修改密码,若员工密码已经修改则按钮显示重置密码
        //如果员工密码为默认则按钮不可用
        button.set({
            caption : (password != "123456") ? "重置密码" : "未修改密码",
            disabled : (password == "123456")
        });
    }
});
self.set("#operation.renderer", new OperationCellRenderer());

 

 

Attachments:

19.3-1.png (image/png)
19.3-2.png (image/png)
19.3-2.png (image/png)
19.3-2.png (image/png)