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<String,String> sqlMap = new HashMap<String,String>(); 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<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<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<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
评一波