Table类型是指com.justep.system.data.Table类

主要用法

1  在UI中从Action获得数据,并装入data组件——在UI中调用Action,Action返回Table类型的变量,在UI中即可获得数据,并装入data组件

2  将UI中data组件的数据传给Action——定义Action的参数为Table类型,在UI中调用Action时传入data组件的数据,在Action中访问Table类型的参数,即可取到data组件的数据

3  报表获取数据——reportData组件关联一个Action,这个Acton只要返回Table类型的参数,报表就可以展现

定义Action返回值为Table类型

Action的返回值类型,在其对应的java方法中直接指定即可。

例如:

public static Table select() {
    Table table = KSQL.select("select ER_WPXX.* from ER_WPXX ER_WPXX", null, "/erp/buy/data", null);
    table.getProperties().put(Table.PROP_NAME_ROWID, "ER_WPXX");
    return table;
}

在java中返回Table类型

1  使用KSQL.select方法

例如

import com.justep.system.data.KSQL;
String query = "select t.sOrgFID, t.sOrgFName, t.sOrgName from SA_ResourceControl t where t.sResourceID=:resource and t.sTypeID=:type";
HashMap<String, Object> params = new HashMap<String, Object>();
params.put("type", typeID);
params.put("resource", resourceID);
Table table = KSQL.select(query, params, "/system/data", null);

2  使用SQL.select方法

例如

import com.justep.system.data.SQL;</pre>
<pre>String oracle = "SELECT RPRODUCTID , RPRODUCTNAME , (SELECT RCATEGORYNAME FROM DEMO_REPORTPRODUCTCATEGORY WHERE DEMO_REPORTPRODUCTCATEGORY.RCATEGORYID = DEMO_REPORTPRODUCTS.RCATEGORYID) AS RCATEGORYNAME , (SELECT RCOMPANYNAME FROM DEMO_REPORTSUPPLIERS WHERE DEMO_REPORTSUPPLIERS.RSUPPLIERID = DEMO_REPORTPRODUCTS.RSUPPLIERID)AS RCOMPANYNAME, RQUANTITYPERUNIT,RUNITPRICE,RUNITSINSTOCK FROM DEMO_REPORTPRODUCTS";
 String mssql = "SELECT RPRODUCTID, RPRODUCTNAME, (SELECT RCATEGORYNAME FROM DEMO_REPORTPRODUCTCATEGORY WHERE DEMO_REPORTPRODUCTCATEGORY.RCATEGORYID = DEMO_REPORTPRODUCTS.RCATEGORYID) AS RCATEGORYNAME , (SELECT RCOMPANYNAME FROM DEMO_REPORTSUPPLIERS WHERE DEMO_REPORTSUPPLIERS.RSUPPLIERID = DEMO_REPORTPRODUCTS.RSUPPLIERID)AS RCOMPANYNAME, RQUANTITYPERUNIT,RUNITPRICE,RUNITSINSTOCK FROM DEMO_REPORTPRODUCTS";
 HashMap&lt;String,String&gt; sqlMap = new HashMap&lt;String,String&gt;();
 sqlMap.put(SQL.DEFAULT_DB_NAME,mssql);
 sqlMap.put(DatabaseProduct.ORACLE.name(),oracle);
 sqlMap.put(DatabaseProduct.MSSQL.name(),mssql);
 sqlMap.put(DatabaseProduct.KINGBASE.name(),oracle);
 sqlMap.put(DatabaseProduct.SYBASE.name(),mssql);
 sqlMap.put(DatabaseProduct.DB2.name(),oracle);
 sqlMap.put(DatabaseProduct.MYSQL.name(),mssql);
 return SQL.select(sqlMap,null,"/demo/report/data");

3  使用BizUtils.resultSet2Table方法

例如

import com.justep.system.util.BizUtils;

Connection conn = ModelUtils.getConnection("/x5demo/rich/data");
Statement exeistStmt = conn.createStatement();
String sql = "select fGoodsCode,fGoodsName from X5_Goods";
ResultSet rs = exeistStmt.executeQuery(sql);
Table table = BizUtils.resultSet2Table(rs, (Model)null);

遍历Table

Iterator it = table.iterator();
while (it.hasNext()){
Row r = it.next();
}

取值、赋值

Row r = it.next();
Object v = r.getValue("sMainOrgID");
r.setValue("sSafeLevelID", "");
r.setValue("sName", null);
r.setValue("sNumb", 0);

删除行

需要先setKeyColumn,设置一下主键列
table.getMetaData().setKeyColumn("TT_WPXX");
table.deleteRows("0B60DFA2214949F79D120C54B51642D1");
<h3>在saveAction的执行前事件中获得客户新增、修改、删除的数据</h3>
public static void goodsTypeProcessBeforeSaveX5_GoodsTypeAction() {
//获得table参数
Table table = (Table)ContextHelper.getActionContext().getParameter("table");
//获得所有修改的行
Iterator rows = table.iterator(com.justep.system.data.ModifyState.EDIT );
Row row;
Collection list=table.getColumnNames();
String[] strArray1 = (String[])list.toArray(new String[0]);
while (rows.hasNext()){
row = rows.next();
for(int i=0;i&lt;table.getColumnCount();i++){
if(row.isModified(strArray1[i])){
System.out.println(row.getValue(i));
System.out.println(row.getOldValue(strArray1[i]));
}
}
}
//获得所有新增的行
rows = table.iterator(com.justep.system.data.ModifyState.NEW );
while (rows.hasNext()){
row = rows.next();
for(int i=0;i&lt;table.getColumnCount();i++){
System.out.println(strArray1[i]+"-"+row.getValue(strArray1[i]));
}
}
//获得所有被删除的行
rows = table.iterator(com.justep.system.data.ModifyState.DELETE );
while (rows.hasNext()){
row = rows.next();
for(int i=0;i&lt;table.getColumnCount();i++){
System.out.println(strArray1[i]+"-"+row.getValue(strArray1[i]));
}
}
}

设置Table主键、总记录数、更新方式等信息

设置主键
table.getProperties().put(Table.PROP_NAME_ROWID, “概念名”);

设置总记录数
table.getProperties().put(Table. PROP_DB_COUNT,总记录数);
设置table的总记录数,数据装入到data组件后,可以使用data组件的getTotal()方法取到总记录数

设置更新方式
table.setUpdateMode(UpdateMode.WHERE_VERSION);

本文由WeX5君整理,WeX5一款开源免费的html5开发工具H5 App开发就用WeX5!

阅读其他app 开发相关文章:http://doc.wex5.com/?p=3443