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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章