为Grid组件的每一行增加“删除/修改”链接

翻译|其它|编辑:郝浩|2007-09-06 09:58:51.000|阅读 1098 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

在看了  Grid  组件的参数后。 我们发现  model  这个参数。 毫无疑问这个参数是用来定义  Bean  中要显示的列, 是否排序, 显示的顺序 等等。 具体可以看  org.apache.tapestry.beaneditor.BeanModelorg.apache.tapestry.services.BeanModelSource. org.apache.tapestry.beaneditor.PropertyModel. 这些接口和他们的实现类。

那我们要怎样增加这样的删除/修改列呢? 因为  column  必须是要在  Bean  中的一个 property 所以最直接的方法是在  Bean  中增加这样的一个假的属性。 比如。

代码

1.      class User {   

2.        

3.        private int id;   

4.        private String name;   

5.           

6.        // add a fake property. However this property shouldn't use except in grid render.   

7.        private String operationColumn;   

8.        

9.             

10.    //...............other properties...........   

11.    

12.      //  .................getter/setter methods   

13.    

14.  }   

代码

1.      <t:parameter t:name="operationColumnCell">  

2.                          <a t:type="ActionLink" t:id="deleteLink" context="currentRow.id">删除</a>  

3.                      </t:parameter>  

ok. 这样我们就实现了这个删除/修改列。

但是大家可能都会觉得这样不爽。因为  operationColumn  污染了我们的  User  类。

下面介绍种不污染的方法。

我们还是要从  model  这个参数下手。。

我们需要  build  一个  beanModel

代码

1.      package com.javaeye.dengyin2000.gtts.tapestry;   

2.        

3.      import java.lang.annotation.Annotation;   

4.        

5.      import org.apache.tapestry.PropertyConduit;   

6.        

7.      public class OperationPC implements PropertyConduit {   

8.        

9.          public Object get(Object arg0) {   

10.    

11.          return "";   

12.    

13.      }   

14.    

15.      public Class getPropertyType() {   

16.    

17.          return String.class;   

18.    

19.      }   

20.    

21.      public void set(Object arg0, Object arg1) {   

22.    

23.      }   

24.    

25.      public <T extends Annotation> T getAnnotation(Class<T> arg0) {   

26.    

27.          return null;   

28.    

29.      }   

30.    

31.  }  

代码

1.      public static BeanModel buildDriverBeanModel(BeanModelSource beanModelSource, ComponentResources componentSources){   

2.              if (driverBeanModel == null){   

3.                     

4.                  PropertyConduit operationPC = new OperationPC();   

5.                     

6.                  driverBeanModel = beanModelSource.create(Driver.class, false, componentSources);   

7.                  driverBeanModel.remove("id", "sex", "photo", "address", "sexType", "national");   

8.                  driverBeanModel.get("name").label("姓名").order(0);   

9.                  driverBeanModel.get("idCard").label("身份证").order(1);   

10.              driverBeanModel.get("telNo").label("电话号码").order(2);   

11.              driverBeanModel.get("carNo").label("车牌号码").order(3);   

12.              driverBeanModel.get("carLong").label("车长(米)").order(4);   

13.              driverBeanModel.get("carWidth").label("车宽(米)").order(5);   

14.              driverBeanModel.get("carHeight").label("车高(米)").order(6);   

15.                 

16.              <span style="color:red;"><b>driverBeanModel.add("operation", operationPC).label("操作").order(7).sortable(false);</b></span>   

17.          }   

18.          return driverBeanModel;   

19.      }  

page 类。

代码

1.           @Inject  

2.      private BeanModelSource beanModelSource;   

3.      @Inject  

4.      private ComponentResources componentSources;   

5.             ..........................................   

6.      public BeanModel getDriverBeanModel(){   

7.          return MiscUtils.buildDriverBeanModel(beanModelSource, getComponentSources());   

8.      }     

html template:

代码

1.      <table t:id="driverGrid" t:type="Grid" model="driverBeanModel" source="driverSource" 

row="currentRow" empty="nodata" pagerPosition="bottom" rowsPerPage="12" class="xx">  

2.      <span style="color:red;"><b>                <t:parameter t:name="operationCell">  

3.                          <a t:type="ActionLink" t:id="deleteLink" context="currentRow.id">删除</a>  

4.                      </t:parameter></b></span>  

5.                  </table>  


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:JavaEye

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP