UIGridDialog表格对话框

APIUMC

后端知识体系开发原生移动应用

UIGridDialog是表格单值对话框,他支持会话模式(上下文输入相关),和事件模式(事件模式就是界面的刷新和关闭由数据事件管理),支持刷新、关闭事件绑定,UIGridDialog是基础虚类,需要我们实现表格的表头信息与表格的数据源,在用getData获取数据的时候,我们可以通过用参数paramsKey获取分页参数和搜索参数,可通过 .setPage(true),来开启事件模式,注意,当表格对话框在同一个WebActivity前面有UIFormDialog类型对话框,则不可启用事件模式。
我们如何实现UIGridDialog呢?只要继承UIGridDialog,实现基方法,如下:
public class UserDialog extends UIGridDialog {

    @Override
    protected Map getHeader() {

        Header header = new Header("Id", 25);
        header.add("Username", "登录名");
        header.add("Alias", "别名");
        return header.getHeaderMap();

    }

    @Override
    protected Map getData(Map paramsKey) {
        int start = Utility.parse((String) Utility.isNull(paramsKey.get("start"), "0"), 0);
        int limit = Utility.parse((String) Utility.isNull(paramsKey.get("limit"), "25"), 25);

        IObjectEntity<User> scheduleEntity = Database.instance().objectEntity(User.class);
        scheduleEntity.order().desc("RegistrTime");

        String Keyword = (String) paramsKey.get("Keyword");

        if (Utility.isEmpty(Keyword) == false) {
            scheduleEntity.where().contains().or().like(() -> {
                User user = new User();
                user.Username = Keyword;
                user.Alias = Keyword;
                return user;
            });
        }
        Map hash = new Hashtable();
        hash.put("data", scheduleEntity.query(start, limit));
        int total=scheduleEntity.count();
        hash.put("total", total);
        if(total==0){
            if (Utility.isEmpty(Keyword) == false) {
                hash.put("msg","未有账户,请新建")
            }else{
                hash.put("msg","未有搜索到对应账户")
            }
        }

        return hash;
    }
}
从上例代码中,我们可以看到他有两个方法,一个getHeadergetData,一个是配置展示字段和取值字段,getData就是数据源,我们再回到processActivity,看下例代码如何使用这个表格对话框
String strUser = this.asyncDialog("Id", d ->
{
    UserDialog dlg = new UserDialog();
    dlg.setSearch(true);//是不是可以搜索,如果为true赠会出现搜索功能
    if (Identity.current().isInRole(Membership.AdminRole)) {
        dlg.menu("创建", "Settings", "User", "News");
        //创建右上角的菜单
    }
    dlg.refreshEvent("Setting");//刷新数据事件
    return dlg;
});
您看,带搜索,可分页排序的表格对话框就是这样完成,简单不.

管理员 | 阅读(94) | 评论(0)

评论
点赞
已读
暂无评论