?自定義html視圖
eXtremeTable使用View接口來生成HTML。你可以使用發(fā)行包已經(jīng)提供的視圖,或者你可以插入自己的視圖實現(xiàn)。如果要定義自己的視圖只需實現(xiàn)View接口,擴展AbstractHtmlView類便可。
一個改變eXtremeTable工具條的實例:(定義兩個類)
1.Mytoolbar.java
public class MyToolbar extends TwoColumnTableLayout {
?????? ?public MyToolbar(HtmlBuilder html, TableModel model) {
?????? ??????? super(html, model);
?????? ??? }
?????? ??? protected boolean showLayout(TableModel model) {
?????? ??????? boolean showPagination = BuilderUtils.showPagination(model);
?????? ??????? boolean showExports = BuilderUtils.showExports(model);
?????? ??????? boolean showTitle = BuilderUtils.showTitle(model);
?????? ??????? if (!showPagination && !showExports && !showTitle) {
?????? ??????????? return false;
?????? ??????? }
?????? ??????? return true;
?????? ??? }
?????? ?? protected void columnLeft(HtmlBuilder html, TableModel model) {
?????? ??????? html.td(2).close();
?????? ??????? new TableBuilder(html, model).title();
?????? ??????? html.tdEnd();
?????? ??? }
?????? ??? protected void columnRight(HtmlBuilder html, TableModel model) {
?????? ??????? boolean showPagination = BuilderUtils.showPagination(model);
?????? ??????? boolean showExports = BuilderUtils.showExports(model);
?????? ??????? ToolbarBuilder toolbarBuilder = new ToolbarBuilder(html, model);
?????? ??????? html.td(2).align("right").close();
???????????????????? ??????? html.table(2).border("0").cellPadding("0").cellSpacing("1").styleClass(BuilderConstants.TOOLBAR_CSS).close();
?????? ??????? html.tr(3).close();
?????? ??????? if (showPagination) {
?????? ??????????? html.td(4).close();
?????? ??????????? toolbarBuilder.firstPageItemAsImage();
?????? ??????????? html.tdEnd();
?????? ??????????? html.td(4).close();
?????? ??????????? toolbarBuilder.prevPageItemAsImage();
?????? ??????????? html.tdEnd();
?????? ??????????? html.td(4).close();
?????? ??????????? toolbarBuilder.nextPageItemAsImage();
?????? ??????????? html.tdEnd();
?????? ??????????? html.td(4).close();
?????? ??????????? toolbarBuilder.lastPageItemAsImage();
?????? ??????????? html.tdEnd();
?????? ??????????? html.td(4).close();
?????? ??????????? toolbarBuilder.separator();
?????? ??????????? html.tdEnd();
?????? ??????????? html.td(4).close();
???????????? //
在工具條里面添加一個文本框以便手動的控制頁面顯示的行數(shù)
?????? ??????????? /* StringBuffer action = new StringBuffer("javascript:");
?????? ??????????? TableActions ta = new TableActions(model);
?????? ??????????? int currentRowsDisplayed = model.getLimit().getCurrentRowsDisplayed()
;
???????????????????? ??? html.input("text").name(model.getTableHandler().prefixWithTableId() + TableConstants.ROWS_DISPLAYED).value(String.valueOf(currentRowsDisplayed);
?????? ??????????? action.append(ta.getClearedExportTableIdParameters());
?????? ??????????? String form = BuilderUtils.getForm(model);
?????? ??????????? action.append("document.forms.").append(form).append(".");
??????????????????????????? ?? action.append(model.getTableHandler().prefixWithTableId()).append(TableConstants.CURRENT_ROWS_DISPLAYED);
?????? ??????????? action.append(".value=").append("this.value").append(";");
?????? ??????????? action.append(ta.getFormParameter(TableConstants.PAGE, "1"));
?????? ??????????? action.append("if(event.keyCode==13){");
?????? ??????????? action.append(ta.getOnInvokeAction());
?????? ??????????? action.append("}");
?????? ??????????? html.onkeypress(action.toString());
?????? ??????????? html.xclose();
?????? ??????????? html.tdEnd();*/
?????? ???????????
?????? ??????????? html.td(4).style("width:10px").close();
?????? ??????????? html.newline();
?????? ??????????? html.tabs(4);
?????? ??????????? toolbarBuilder.rowsDisplayedDroplist();
?????? ??????????? html.img();
?html.src(BuilderUtils.getImage(model, BuilderConstants.TOOLBAR_ROWS_DISPLAYED_IMAGE));
?????? ???????????html.style("border:0");
?????? ??????????? html.alt("Rows Displayed");
?????? ??????????? html.xclose();
?????? ??????????? html.tdEnd();
?????? ??????????? if (showExports) {
?????? ??????????????? html.td(4).close();
?????? ??????????????? toolbarBuilder.separator();
?????? ?????????? ?????html.tdEnd();
?????? ??????????? }
?????? ??????? }
?????? ??????? if (showExports) {
?????? ??????????? Iterator iterator = model.getExportHandler().getExports().iterator();
?????? ??????????? for (Iterator iter = iterator; iter.hasNext();) {
?????? ??????????????? html.td(4).close();
?????? ??????????????? Export export = (Export) iter.next();
?????? ??????????????? toolbarBuilder.exportItemAsImage(export);
?????? ??????????????? html.tdEnd();
?????? ??????????? }
?????? ??????? }
?????? ??????? html.trEnd(3);
?????? ??????? html.tableEnd(2);
?????? ??????? html.newline();
?????? ??????? html.tabs(2);
?????? ??????? html.tdEnd();
?????? ??? }
}
2.MyView.java
public class MyView?extends AbstractHtmlView {
?????? ?protected void beforeBodyInternal(TableModel model) {
?????? ??????? getTableBuilder().tableStart();
?????? ??????? getTableBuilder().theadStart();
?????? ??????? getTableBuilder().filterRow();
?????? ??????? getTableBuilder().headerRow();
?????? ??????? getTableBuilder().theadEnd();
?????? ??????? getTableBuilder().tbodyStart();
?????? ??? }
?????? ??? protected void afterBodyInternal(TableModel model) {
?????? ??????? getCalcBuilder().defaultCalcLayout();
?????? ??????? getTableBuilder().tbodyEnd();
?????? ??????? getTableBuilder().tableEnd();
?????? ??????? toolbar(getHtmlBuilder(), getTableModel());
?????? ??????? statusBar(getHtmlBuilder(), get自定義html視圖eXtremeTable使用View接口來生成HTML。你可以使用發(fā)行包已經(jīng)提供的視圖,或者你可以插入自己的視圖實現(xiàn)。如果要定義自己的視圖只需實現(xiàn)View接口,擴展AbstractHtmlView類便可。
一個改變eXtremeTable工具條的實例:(定義兩個類)
1.Mytoolbar.java
public class MyToolbar extends TwoColumnTableLayout {
?????? ?public MyToolbar(HtmlBuilder html, TableModel model) {
?????? ??????? super(html, model);
?????? ??? }
?????? ??? protected boolean showLayout(TableModel model) {
?????? ??????? boolean showPagination = BuilderUtils.showPagination(model);
?????? ??????? boolean showExports = BuilderUtils.showExports(model);
?????? ??????? boolean showTitle = BuilderUtils.showTitle(model);
?????? ??????? if (!showPagination && !showExports && !showTitle) {
?????? ??????????? return false;
?????? ??????? }
?????? ??????? return true;
?????? ??? }
?????? ?? protected void columnLeft(HtmlBuilder html, TableModel model) {
?????? ??????? html.td(2).close();
?????? ??????? new TableBuilder(html, model).title();
?????? ??????? html.tdEnd();
?????? ??? }
?????? ??? protected void columnRight(HtmlBuilder html, TableModel model) {
?????? ??????? boolean showPagination = BuilderUtils.showPagination(model);
?????? ??????? boolean showExports = BuilderUtils.showExports(model);
?????? ??????? ToolbarBuilder toolbarBuilder = new ToolbarBuilder(html, model);
?????? ??????? html.td(2).align("right").close();
???????????????????? ??????? html.table(2).border("0").cellPadding("0").cellSpacing("1").styleClass(BuilderConstants.TOOLBAR_CSS).close();
?????? ??????? html.tr(3).close();
?????? ??????? if (showPagination) {
?????? ??????????? html.td(4).close();
?????? ??????????? toolbarBuilder.firstPageItemAsImage();
?????? ??????????? html.tdEnd();
?????? ??????????? html.td(4).close();
?????? ??????????? toolbarBuilder.prevPageItemAsImage();
?????? ??????????? html.tdEnd();
?????? ??????????? html.td(4).close();
?????? ??????????? toolbarBuilder.nextPageItemAsImage();
?????? ??????????? html.tdEnd();
?????? ??????????? html.td(4).close();
?????? ??????????? toolbarBuilder.lastPageItemAsImage();
?????? ??????????? html.tdEnd();
?????? ??????????? html.td(4).close();
?????? ??????????? toolbarBuilder.separator();
?????? ??????????? html.tdEnd();
?????? ??????????? html.td(4).close();
???????????? //在工具條里面添加一個文本框以便手動的控制頁面顯示的行數(shù)
?????? ??????????? /* StringBuffer action = new StringBuffer("javascript:");
?????? ??????????? TableActions ta = new TableActions(model);
?????? ??????????? int currentRowsDisplayed = model.getLimit().getCurrentRowsDisplayed();
???????????????????? ??? html.input("text").name(model.getTableHandler().prefixWithTableId() + TableConstants.ROWS_DISPLAYED).value(String.valueOf(currentRowsDisplayed);
?????? ??????????? action.append(ta.getClearedExportTableIdParameters());
?????? ??????????? String form = BuilderUtils.getForm(model);
?????? ??????????? action.append("document.forms.").append(form).append(".");
??????????????????????????? ?? action.append(model.getTableHandler().prefixWithTableId()).append(TableConstants.CURRENT_ROWS_DISPLAYED);
?????? ??????????? action.append(".value=").append("this.value").append(";");
?????? ??????????? action.append(ta.getFormParameter(TableConstants.PAGE, "1"));
?????? ??????????? action.append("if(event.keyCode==13){");
?????? ??????????? action.append(ta.getOnInvokeAction());
?????? ??????????? action.append("}");
?????? ??????????? html.onkeypress(action.toString());
?????? ??????????? html.xclose();
?????? ??????????? html.tdEnd();*/
?????? ???????????
?????? ??????????? html.td(4).style("width:10px").close();
?????? ??????????? html.newline();
?????? ??????????? html.tabs(4);
?????? ??????????? toolbarBuilder.rowsDisplayedDroplist();
?????? ??????????? html.img();
?html.src(BuilderUtils.getImage(model, BuilderConstants.TOOLBAR_ROWS_DISPLAYED_IMAGE));
?????? ???????????html.style("border:0");
?????? ??????????? html.alt("Rows Displayed");
?????? ??????????? html.xclose();
?????? ??????????? html.tdEnd();
?????? ??????????? if (showExports) {
?????? ??????????????? html.td(4).close();
?????? ??????????????? toolbarBuilder.separator();
?????? ?????????? ?????html.tdEnd();
?????? ??????????? }
?????? ??????? }
?????? ??????? if (showExports) {
?????? ??????????? Iterator iterator = model.getExportHandler().getExports().iterator();
?????? ??????????? for (Iterator iter = iterator; iter.hasNext();) {
?????? ??????????????? html.td(4).close();
?????? ??????????????? Export export = (Export) iter.next();
?????? ??????????????? toolbarBuilder.exportItemAsImage(export);
?????? ??????????????? html.tdEnd();
?????? ??????????? }
?????? ??????? }
?????? ??????? html.trEnd(3);
?????? ??????? html.tableEnd(2);
?????? ??????? html.newline();
?????? ??????? html.tabs(2);
?????? ??????? html.tdEnd();
?????? ??? }
}
2.MyView.java
public class MyView?extends AbstractHtmlView {
?????? ?protected void beforeBodyInternal(TableModel model) {
?????? ??????? getTableBuilder().tableStart();
?????? ??????? getTableBuilder().theadStart();
?????? ??????? getTableBuilder().filterRow();
?????? ??????? getTableBuilder().headerRow();
?????? ??????? getTableBuilder().theadEnd();
?????? ??????? getTableBuilder().tbodyStart();
?????? ??? }
?????? ??? protected void afterBodyInternal(TableModel model) {
?????? ??????? getCalcBuilder().defaultCalcLayout();
?????? ??????? getTableBuilder().tbodyEnd();
?????? ??????? getTableBuilder().tableEnd();
?????? ??????? toolbar(getHtmlBuilder(), getTableModel());
?????? ??????? statusBar(getHtmlBuilder(), getTableModel());
?????? ??? }
?????? ??? protected void toolbar(HtmlBuilder html, TableModel model) {
?????? ??????? new MyToolbar(html, model).layout();
?????? ??? }
?????? ??? protected void statusBar(HtmlBuilder html, TableModel model) {
?????? ??????? new DefaultStatusBar(html, model).layout();
?????? ??? }
}
然后在<ec:table>中添加一個屬性view=”MyView的完整類名”,運行效果如下:
TableModel());
?????? ??? }
?????? ??? protected void toolbar(HtmlBuilder html, TableModel model) {
?????? ??????? new MyToolbar(html, model).layout();
?????? ??? }
?????? ??? protected void statusBar(HtmlBuilder html, TableModel model) {
?????? ??????? new DefaultStatusBar(html, model).layout();
?????? ??? }
}
然后在<ec:table>中添加一個屬性view=”MyView的完整類名”。
為表格添加操作在實際應(yīng)用,特別是在一些管理系統(tǒng)中前臺頁面往往查看信息與編輯、刪除都放在一起。對于eXtremeTable達到這樣的效果只需在jsp文件中(自定義一列)如下:
<ec:column alias="操作" filterable="false" sortable="false" >
<a href="${pageContext.request.contextPath}/servlet/EmployeeServlet?param=edit&id=${employee.id}">編輯</a>
<!--使用圖片的好處就是可以避免國際化的問題-->
<a onclick="confirm('真的刪除');" ><img border="0" src ="${pageContext.request.contextPath}/images/delete.jpg"></a>
</ec:column>
Lyyb2001