3.2 數據區表生成工具

  和查詢區相比,數據區有表頭,數據是多行,還有相關的統計行和分頁行,統計行和分頁行的輸出位置可自己定義。
  數據區的生成步驟包括數據生成、表頭定義和數據列定義,和查詢區表格類似但是要複雜一點。
  以《3 頁面設計》中的數據區爲例:

//建立顯示數據
Result listResult = new Result();
for (int i=0;i<retList.size();i++)
{
  QryRecord record = retList.getQryRecord(i);
  Record listRecord = new Record();
  listRecord.add(PageProc.getSerialNum(request,i));
  listRecord.add(record.get("SPD_TestTime"));
  listRecord.add(record.get("SPD_DepName"));
  listRecord.add(record.get("SPD_UserName"));
  listRecord.add(record.get("SPD_Url"));
  listRecord.add(record.get("SPD_AllTime"));
  listRecord.add(record.get("SPD_ServerTime"));
  listRecord.add(SpeedRecord.getSpeedLevel(record));
  listResult.add(listRecord);
}
//建立顯示數據完成

JspSimpleDataTableManager manager = new JspSimpleDataTableManager(out,request);//生成類
//設置顯示的數據
retInfo.ret = listResult;
manager.setRetInfo(retInfo);

manager.addTextField("序號",Type.INT_TYPE);//設置標題和數據的類型
int index = 0;
//通過順序號設置屬性
manager.setHeadTdPropertyValue(index,"height","26");//設置數據區表格行高,只設置一行,文件更小
manager.setHeadTdPropertyValue(index,"width","10%");//設置表格數據寬度
manager.setDataTdPropertyValue(index,"align","center");//設置表格數據對齊方式

TableHeadField headField = manager.createHeadField(" 時 間 "); //定義標頭
headField.setOrderByField("SPD_TestTime"); //設置標頭排序
headField.setTdPropertyValue("width","15%"); //設置td寬度
TableDataField dataField = manager.createDataField("SPD_TestTime",Type.STRING_TYPE,TableDataField.TEXT);//定義數據值

headField = manager.createHeadField(" 部 門 ");
headField.setOrderByField("SPD_DepName");
headField.setTdPropertyValue("width","15%");
dataField = manager.createDataField("SPD_DepName",  Type.STRING_TYPE,TableDataField.TEXT);

headField = manager.createHeadField(" 用 戶 ");
headField.setOrderByField("SPD_UserName");
headField.setTdPropertyValue("width","15%");
dataField = manager.createDataField("SPD_UserName",  Type.STRING_TYPE,TableDataField.TEXT);

headField = manager.createHeadField("測試類型");
headField.setOrderByField("SPD_Url");
headField.setTdPropertyValue("width","10%");
dataField = manager.createDataField("SPD_Url",  Type.STRING_TYPE,TableDataField.TEXT);

headField = manager.createHeadField("時間(毫秒)");
headField.setOrderByField("SPD_AllTime");
headField.setTdPropertyValue("width","10%");
dataField = manager.createDataField("SPD_AllTime",  Type.STRING_TYPE,TableDataField.TEXT);
dataField.setStatType(TableDataField.STAT_TYPE_SUM);// 進行合計

headField = manager.createHeadField("服務端(毫秒)");
headField.setOrderByField("SPD_ServerTime");
headField.setTdPropertyValue("width","15%");
dataField = manager.createDataField("SPD_ServerTime",  Type.STRING_TYPE,TableDataField.TEXT);
dataField.setStatType(TableDataField.STAT_TYPE_SUM);// 進行合計

headField = manager.createHeadField(" 網 速 ");
headField.setTdPropertyValue("width","10%");
dataField = manager.createDataField("",  Type.STRING_TYPE,TableDataField.TEXT);
//生成統計行
Record statRecord = manager.createStatRecord();
manager.setDataFieldStatType(0,TableDataField.STAT_TYPE_TEXT);
statRecord.set(0,"小計");
manager.setOutStatType(manager.STAT_OUT_DOWN);
manager.setOutStatRecord(statRecord);
//生成統計行結束

PageNoAndTableManager pageNoAndTableManager = new PageNoAndTableManager(manager);//分頁行輸出類
pageNoAndTableManager.setOutPageNoLineType(pageNoAndTableManager.LINE_OUT_UPDOWN);//上下都輸出分頁行
pageNoAndTableManager.outHtml();//輸出數據

 

  用到的新的方法:
  /**
   * 設置排序的字符串(數據庫字段名)
   * @param orderByName   排序的字符串(數據庫字段名)
   */
  public void setOrderByField(String orderByName)//點擊標題可以排序,先遞增、後遞減,交替設置
  /**
   * 建立一個標題字段
   * @param title    標題顯示的內容
   * @return         標題字段
   * @throws java.lang.Exception
   */
  public TableHeadField createHeadField(String title) throws Exception
  /**
   * 建立一個列控制字段
   * @param name            名字
   * @param type            對應列的數據類型
   * @param displayType     顯示類型
   * @return                列字段
   * @throws java.lang.Exception
   */
  public TableDataField createDataField(String name,int type, int displayType) throws Exception
  /**
   * 設置數據TD屬性的值
   * @param index    順序號
   * @param key      屬性(小寫)
   * @param value    表屬性的默認值
   * @throws java.lang.Exception
   */
  public void setDataTdPropertyValue(int index,String key,String value) throws Exception
  /**
   * 設置數據屬性的值
   * @param index    順序號
   * @param key      屬性(小寫)
   * @param value    表屬性的默認值
   * @throws java.lang.Exception
   */
  public void setDataPropertyValue(int index,String key,String value) throws Exception
  設置數據屬性的值和設置數據TD屬性的值的方法有點象,注意不要混用。
  /**
   * 設置數據列的統計類型
   * @param statType     統計類型
   */
  public void setStatType(int statType)//TableDataField.STAT_TYPE_SUM表示求和
 
  關於統計:
  統計行的生成過程是先生成統計記錄,然後根據需要進行修改,並設置輸出方式,最後交給生成類輸出。

  PageNoAndTableManager是分頁行輸出類,這個功能稍微複雜一點,後面專門介紹。

發佈了36 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章