浏览 1866 次
锁定老帖子 主题:jmesa之Toolbar
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-11-23
最后修改:2009-11-23
默认的工具栏选项类源码是这样的: public class HtmlToolbar extends AbstractToolbar { @SuppressWarnings("unchecked") @Override public String render() { if (hasToolbarItems()) { // already has items return super.render(); } addToolbarItem(ToolbarItemType.FIRST_PAGE_ITEM); addToolbarItem(ToolbarItemType.PREV_PAGE_ITEM); //AbstractToolbar有个enablePageNumbers方法,用于设置显示数字的页是否可用,但 //本人试着新创建HtmlToolbar对象,然后将enablePageNumbers的值设为true,然后将它重新放回tableFacade,结果还是一样,换了几个位置,都没成功,估计是系统的bug if (enablePageNumbers) { addToolbarItem(ToolbarItemType.PAGE_NUMBER_ITEMS); } addToolbarItem(ToolbarItemType.NEXT_PAGE_ITEM); addToolbarItem(ToolbarItemType.LAST_PAGE_ITEM); if (enableSeparators) { addToolbarItem(ToolbarItemType.SEPARATOR); } MaxRowsItem maxRowsItem = (MaxRowsItem) addToolbarItem(ToolbarItemType.MAX_ROWS_ITEM); if (getMaxRowsIncrements() != null) { maxRowsItem.setIncrements(getMaxRowsIncrements()); } boolean exportable = ViewUtils.isExportable(getExportTypes()); if (exportable && enableSeparators) { addToolbarItem(ToolbarItemType.SEPARATOR); } if (exportable) { addExportToolbarItems(getExportTypes()); } Row row = getTable().getRow(); List columns = row.getColumns(); boolean filterable = ViewUtils.isFilterable(columns); if (filterable && enableSeparators) { addToolbarItem(ToolbarItemType.SEPARATOR); } if (filterable) { addToolbarItem(ToolbarItemType.FILTER_ITEM); addToolbarItem(ToolbarItemType.CLEAR_ITEM); } boolean editable = ViewUtils.isEditable(getCoreContext().getWorksheet()); if (editable && enableSeparators) { addToolbarItem(ToolbarItemType.SEPARATOR); } if (editable) { addToolbarItem(ToolbarItemType.SAVE_WORKSHEET_ITEM); addToolbarItem(ToolbarItemType.FILTER_WORKSHEET_ITEM); } return super.render(); } } 上面说了,enablePageNumbers好像没有什么作用,只有手动实现一个工具栏的类,然后直接添加ToolbarItemType.PAGE_NUMBER_ITEMS参数,官方有一个例子,这个例子还添加了一个自定义的图形按钮,一并写上来,于是自定义的工具栏类就像下面这样: public class CustomToolbar extends AbstractToolbar { @Override public String render() { addToolbarItem(ToolbarItemType.FIRST_PAGE_ITEM); addToolbarItem(ToolbarItemType.PREV_PAGE_ITEM); addToolbarItem(ToolbarItemType.NEXT_PAGE_ITEM); addToolbarItem(ToolbarItemType.LAST_PAGE_ITEM); addToolbarItem(ToolbarItemType.SEPARATOR); addToolbarItem(ToolbarItemType.PAGE_NUMBER_ITEMS); ImageItemImpl item = new ImageItemImpl(); item.setCode("custom-item"); item.setTooltip("Hello World"); item.setImage(getImage("custom.png", getWebContext(), getCoreContext())); item.setAlt("custom"); ToolbarItemRenderer renderer = new CustomItemRenderer(item, getCoreContext()); renderer.setOnInvokeAction("onInvokeAction"); item.setToolbarItemRenderer(renderer); addToolbarItem(item); MaxRowsItem maxRowsItem = (MaxRowsItem) addToolbarItem(ToolbarItemType.MAX_ROWS_ITEM); if (getMaxRowsIncrements() != null) { maxRowsItem.setIncrements(getMaxRowsIncrements()); } boolean exportable = ViewUtils.isExportable(getExportTypes()); if (exportable) { addToolbarItem(ToolbarItemType.SEPARATOR); addExportToolbarItems(getExportTypes()); } Row row = getTable().getRow(); List columns = row.getColumns(); boolean filterable = ViewUtils.isFilterable(columns); if (filterable) { addToolbarItem(ToolbarItemType.SEPARATOR); addToolbarItem(ToolbarItemType.FILTER_ITEM); addToolbarItem(ToolbarItemType.CLEAR_ITEM); } boolean editable = ViewUtils.isEditable(getCoreContext().getWorksheet()); if (editable) { addToolbarItem(ToolbarItemType.SEPARATOR); addToolbarItem(ToolbarItemType.SAVE_WORKSHEET_ITEM); addToolbarItem(ToolbarItemType.FILTER_WORKSHEET_ITEM); } addToolbarItem(ToolbarItemType.SEPARATOR); return super.render(); } private static String getImage(String image, WebContext webContext, CoreContext coreContext) { String imagesPath = HtmlUtils.imagesPath(webContext, coreContext); return imagesPath + image; } private static class CustomItemRenderer extends AbstractItemRenderer { public CustomItemRenderer(ToolbarItem item, CoreContext coreContext) { setToolbarItem(item); setCoreContext(coreContext); } public String render() { ToolbarItem item = getToolbarItem(); StringBuilder action = new StringBuilder("javascript:"); action.append("alert('Hello World')"); item.setAction(action.toString()); return item.enabled(); } } } 其中有张图片custom.png放在images/table目录即可。 自定义工具栏类写好以后,把它放入相应的tableFacade,注意放的位置最后是放在render方法调用之前即可,如: tableFacade.setToolbar(new CustomToolbar()); return tableFacade.render(); 最后还要在JSP中设置一下: <jmesa:tableFacade .... toolbar="com.util.CustomToolbar"> 现在就可以在相应的JSP页面看见数字分页了,默认的方式是显示当前页的前后5页,当然也可以手动修改配置文件: html.toolbar.maxPageNumbers=5 把上面的值改成相应的数字即可。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |