SigmaGridがかなり便利そうなので次回のPJで採用することに。

$あきらるのブログ

サンプル を見ても、かなり良くできてるので、試してみました。


SigmaGrid + jspの構成サンプルをSigmaGridからダウンロード。

http://www.sigmawidgets.com/products/sigma_grid/demos/example_server_side.html

一覧表示時のメソッドはサンプルでは下記の通りだが、

サンプル(SigmaGrid提供)

List listOrders(){
Connection conn = getConnection();
if(conn==null)
return new ArrayList();
Statement stmt = null;

ResultSet rs = null;
List list = new ArrayList();

try{
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from orders");
while(rs.next()){
Map map = new HashMap();
map.put("order_no",new Long(rs.getLong("order_no")));
map.put("employee",rs.getString("employee"));
map.put("country",rs.getString("country"));
map.put("customer",rs.getString("customer"));
map.put("order2005",new Float(rs.getFloat("order2005")));
map.put("order2006",new Float(rs.getFloat("order2006")));
map.put("order2007",new Float(rs.getFloat("order2007")));
map.put("order2008",new Float(rs.getFloat("order2008")));
map.put("delivery_date",rs.getString("delivery_date"));
list.add(map);
}
rs.close();
stmt.close();
}catch(Exception e){
}
closeConnection(conn);
return list;
}



今回はS2Daoを使用したいので下記の様に修正。

修正(S2Dao使用)

List listOrders(){
CONTRACTERSDao dao = (CONTRACTERSDao)SingletonS2Container.getComponent("CONTRACTERSDao");
List beanList = dao.getAllCONTRACTERS();
List mapList = MyArrayUtil.beanAry2MapAry(beanList);
return mapList;
}


そうするとどうも、日付型が表示時に「Tue Feb 07 2012」とかになっており、どーも宜しくない。

あきらるのブログ


Columnのプロパティに「type:'Date',format:'%y/%m/%d'」とかやっても変わらない。

FireBugで確認すると、どうもJSONでのレスポンス返却時に

「GridServerHandler」がJavaのDate型を「new Date(849438439843)」とかに変換して返却してる様子。

これに関しては「com.fins.org.json.JSONCustomType」を下記の様に修正すれば対応可能。


public static String toString(Object value, short type) {
if (TYPE_DATE == type && value != null) {
// return "new Date("+ ((Date)value).getTime()+")";
return JSONObject.quote(new SimpleDateFormat("yyyy/MM/dd")
.format((Date) value));
}
if (TYPE_NATIVE == type) {
return String.valueOf(value);
}
return JSONObject.quote(String.valueOf(value));
}



$あきらるのブログ

ちゃんと日付がYYYY/MM/DDで出てる。OK!

ちなみに編集時のために列オプションも下記の様にしておくと、

DatePickerも使えるし、妥当性チェックもできるしいい感じ。


{id : 'USE_REQ_DATE', header: 'USE_REQ_DATE',editor: {type:"date",format:'yyyy/MM/dd',
validator : function(value,record,colObj,grid){
if ( value != '' && !ckDate(value)) {
return "yyyy/mm/dd形式で入力してください";
}
return true;
}
}},


あきらるのブログ
あきらるのブログ

ソースの中に記載してある関数等は独自のものなので、適宜読み替えてね^^