今天,我继续调查在Maskat中怎样实现分页并排序,最终搞定了。
上午开了个早会,老大给我们打了点气。
—》项目启动初期,每天上午,我们都要开个早会,对昨天的情况做个总结,对今天的任务做个具体部署。(20090519追加)
根据昨天的经验教训,我今天换了个调查方向,从官网入手:<!-- --><!-- --> <!-- -->http://maskat.sourceforge.jp/
我重点调查Rialto 部品ライブラリ中的Grid,链接地址是<!-- --><!-- --> <!-- -->http://maskat.sourceforge.jp/index.php?Rialto%2FGrid
因为在Maskat中,就是由这个标签来显示(列表)数据的(而其他的标签我也大概都看了一遍,没有直接控制分页的)。
在最上面的简要图片介绍中,我看到这样的信息:
bNavig="true"
这个页面看上去就是分页的效果嘛,接着看下面的属性一览:
属性名 | 概要 | 必須 | 形式 | デフォルト値 |
bNavig | グリッドの表示モードを指定する。ナビゲーションモードではrang属性で指定した行数ごとにテーブルデータを切り替え表示する。ブロックモードではテーブルデータをすべて表示する true : ナビゲーションモード false : ブロックモード |
|
boolean | false |
rang | bNavig属性がtrue(ナビゲーションモード)の場合、一度に表示する行数 | |
number | 15 |
从字面上来理解,这就是其中的两个核心属性(控制分页显示的)。
-》bNavig属性,为true时表示导航模式(分页模式),为false时表示不分页;
rang属性,该属性只有在bNavig属性为true时才有效,它的值表示的是每页显示记录数。(20090519追加)
为了验证这种推测,我就在maskat的layout.xml文件中,先使用写死的数据进行测试。
我拷贝了官网上个提供的这段代码:
<grid name="grdNew" top="200" left="250" tabIndex="0" height="100" sortCol="0" > <gridHeader width="50" title="ヘッダ" type="string"/> <gridHeader width="50" title="ヘッダ" type="string"/> <gridHeader width="50" title="ヘッダ" type="string"/> <gridLine> <gridCell value="セル1_1"/> <gridCell value="セル1_2"/> <gridCell value="セル1_3"/> </gridLine> <gridLine> <gridCell value="セル2_1"/> <gridCell value="セル2_2"/> <gridCell value="セル2_3"/> </gridLine> </grid>
并多复制了几份(比如最终达到了7项)
<gridLine>
同时,在头部
<grid
定义中,增加了这两个属性:
bNavig="true"
rang="2"
-》意思是说:具有分页效果,且每页记录数为2。(20090519追加)
预览一下,OK,分页功能显示出来了,共分成4页,可以自由迁移。
同时,排序的功能也已经有了,随意点击某列,就可以按照该列的升序或降序排列。
至此,应该可以得出结论,Maskat中是可以直接进行分页的。
下午,我的调查重点就放在了如何将DB中拿出的数据进行分页显示。
这个问题,花了我很长时间,事后看来,我走了弯路。
我错误地把重点放在了如何整合noticeListLayout.xml和noticeListLayout_e.xml上。因为从文件内容上来看,我“发现”前者是控制表头(各个列)显示的,而后者是控制将从数据库中拿出的记录一条条地绑定到页面上进行显示。
其实,后来才发现,其实不需要这么麻烦,直接在noticeListLayout.xml文件中添加两个属性就可以控制分页显示了,跟写死数据那样没什么两样。
noticeListLayout.xml文件如下(注意添加上其中的两个属性即可):
<?xml version="1.0" encoding="UTF-8"?> <layoutDef> <layout name= "noticeListLayout" > <frame name= "frmNew" left= "128" top= "53" width= "617" height= "378" > <grid name= "grdNew" left= "23" top= "11" tabIndex= "-1" height= "329" bNavig="true" rang="3" sortCol= "1" > <gridHeader width= "30" title= "行 " type= "string" /> <gridHeader width= "100" title= "XXXX " type= "string" /> <gridHeader width= "100" title= "yyyy " type= "string" /> <gridHeader width= "100" title= "ZZZZZ " type= "string" /> <gridHeader width= "100" title= "TTTTT " type= "string" /> </grid> </frame> </layout> </layoutDef>
<!-- --><!-- --> <!-- -->
至此,使用Maskat进行分页控制的功能调查算是完毕了,结果还不错。
-》但是,最终项目中并没有使用这个来进行分页控制。(20090519追加)
我又认真看了grid标签的其他属性介绍,摘抄其中几个自己认为比较重要的属性:
bNavig和rang:这两个不用说了,控制分页就靠这弟兄俩了。
switchable:控制“是否可以模式切换”的功能
sortable:控制“是否可以排序”的功能,默认值是true
writable:控制“是否可写”的功能
sortCol:控制“初始按照哪列进行排序”的功能
sortType:控制“是按升序还是降序进行排序”的功能
onCellEdit:cell编辑时调用函数名
说明:这个标签中,属性项多达20项,除去那些直接一眼看出意思的属性项以外,对于那些解释看得不太懂的属性(毕竟日语牛人不太多),我的方法是(特别适用于值为true或false的属性):直接进行设置,看预览效果,两相对比,属性的意思立马明白了。
事后来看,原来困扰我们一天多的一个问题,解决方案竟是如此的简单,真让人有些感叹摸索的艰辛。
-》众里寻他千百度,蓦然回首,那人却在灯火阑珊处。(20090519追加)
注:网上关于Maskat的资料很少,好像到目前为止,就只有官网上有一些文档可以参考。
以上就是我关于使用Maskat实现分页、排序功能的调查情况,希望对其他兄弟姐妹有所帮助。