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; } }
从上例代码中,我们可以看到他有两个方法,一个getHeader和getData,一个是配置展示字段和取值字段,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)
暂无评论