论坛首页 Java企业应用论坛

T5 技巧 2:为Grid组件的每一行增加“删除/修改”链接。

浏览 16033 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-08-22  
koda 写道
接下来的定制是:
1). 如何更改默认Title显示
2). 如何定制CSS


在你的页面中覆盖掉tapestry定义的css。 比如:

引用
table.t-data-grid {
border-collapse:collapse;
border-left:1px solid silver;
width:100%;
}

table.t-data-grid thead tr {
background:#990000 url(../images/sprites.gif) repeat-x scroll 0pt -1300px;
color:white;
}

div.t-data-grid-pager span.current {
background:#FFFFFF none repeat scroll 0%;
border:1px solid #CCCCCC;
color:#CCCCCC;
padding:2px 5px;
text-decoration:none;
}

div.t-data-grid-pager a:hover {
background:#CC0000 none repeat scroll 0%;
color:#FFFFFF;
}

div.t-data-grid-pager a {
border:1px solid silver;
color:#CC0000;
font-size:medium;
margin-right:5px;
padding:2px 5px;
text-decoration:none;
}

div.t-data-grid-pager span.current {
border:1px solid silver;
color:black;
font-size:medium;
margin-right:5px;
padding:2px 5px;
text-decoration:none;
}



效果如下:  (上面的示例代码就是来自这个页面。)
  • 大小: 126.2 KB
0 请登录后投票
   发表时间:2007-08-22  
是啊,应该是这样哦:)

那么title文字的定制呢?
0 请登录后投票
   发表时间:2007-08-23  
TO:  dengyin2000

能否整理个完整的"为Grid组件的每一行增加“删除/修改”链接"。
非常感谢。
0 请登录后投票
   发表时间:2007-08-23  
match927 写道
TO:  dengyin2000

能否整理个完整的"为Grid组件的每一行增加“删除/修改”链接"。
非常感谢。


有哪里不懂?  我应该算讲得比较详细吧,。 
0 请登录后投票
   发表时间:2007-08-23  
谢谢,能不能讲讲下拉框,。。。
0 请登录后投票
   发表时间:2007-08-25  
非常感谢你的分享,我在用grid控件,页面为典型的主/从查询页面,从主传输参数过来到从,从页面用grid,结果也能够查出来,但是分页出了问题,就是说第一页码,可以有结果,但是点击第二页时候,没有显示,搂主能不能帮助解决一下,谢谢
0 请登录后投票
   发表时间:2007-08-25  
hitalang 写道
非常感谢你的分享,我在用grid控件,页面为典型的主/从查询页面,从主传输参数过来到从,从页面用grid,结果也能够查出来,但是分页出了问题,就是说第一页码,可以有结果,但是点击第二页时候,没有显示,搂主能不能帮助解决一下,谢谢


我不知道你是怎样实现GridDataSource的。。

我贴下我的吧。
package com.javaeye.dengyin2000.gtts.utils;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringUtils;
import org.apache.tapestry.beaneditor.PropertyModel;
import org.apache.tapestry.grid.GridDataSource;

import com.javaeye.dengyin2000.gtts.domain.Driver;
import com.javaeye.dengyin2000.gtts.genericdao.Page;
import com.javaeye.dengyin2000.gtts.service.BussnissService;

public class DriverGridDataSource implements GridDataSource {

	private String nameQueryString;
	
	private int pageSize;
	
	private BussnissService service;
	
	private int totalCount;
	
	private Map<Integer, Driver> currentDatas = new HashMap<Integer, Driver>();
	
	public DriverGridDataSource(String string, int pageSize, BussnissService service){
		this.nameQueryString = string;
		this.pageSize = pageSize;
		this.service = service;
	}
	
	public int getAvailableRows() {
		if (totalCount == 0)
			this.totalCount = service.getDomainsCount(getHqlString(), getParams());
		return totalCount;
	}

	public Class getRowType() {
		return Driver.class;
	}

	public Object getRowValue(int index) {
		return currentDatas.get(index);
	}


	@SuppressWarnings("unchecked")
	public void prepare(int startIndex, int endIndex, PropertyModel sortModel,
			boolean ascending) {
		Page page = null;
		if (sortModel == null)
			page = service.pagedQuery(getHqlString(), startIndex, pageSize, null, false, getParams(), this.totalCount);
		else
			page = service.pagedQuery(getHqlString(), startIndex, pageSize, sortModel.getPropertyName(), ascending, getParams(),this.totalCount);
		List<Driver> result = (List<Driver>) page.getResult();
		currentDatas.clear();
		for(int i=0; i<result.size(); i++){
			currentDatas.put(startIndex+i, result.get(i));
		}
	}
	
	private String getHqlString(){
		String hql = "from Driver where 1=1";
		if (StringUtils.isNotBlank(nameQueryString)){
			hql = hql + " and name like :name";
		}
		return hql;
	}

	private Map<String, Object> getParams(){
		Map<String, Object> params = new HashMap<String, Object>();
		if (StringUtils.isNotBlank(nameQueryString)){
			params.put("name", "%" + nameQueryString + "%");
		}
		return params;
	}

	public void setTotalCount(int totalCount) {
		this.totalCount = totalCount;
	}
	
	
}



package com.javaeye.dengyin2000.gtts.pages.basicinformation;

import java.util.ArrayList;
import java.util.List;

import org.apache.tapestry.Block;
import org.apache.tapestry.annotations.Component;
import org.apache.tapestry.annotations.Inject;
import org.apache.tapestry.annotations.Persist;
import org.apache.tapestry.beaneditor.BeanModel;
import org.apache.tapestry.corelib.components.Grid;
import org.apache.tapestry.grid.GridDataSource;
import org.apache.tapestry.services.BeanModelSource;

import com.javaeye.dengyin2000.gtts.base.BasePage;
import com.javaeye.dengyin2000.gtts.domain.Driver;
import com.javaeye.dengyin2000.gtts.utils.DriverGridDataSource;
import com.javaeye.dengyin2000.gtts.utils.MiscUtils;

public class Drivers extends BasePage {
	
	@Inject
	private BeanModelSource beanModelSource;
	
	@Inject
	private Block nodata;
	
	@Component(id="driverGrid")
	private Grid driverGrid;
	
	private String driverName;
	
	private Driver currentRow;
	
	@Persist
	private GridDataSource dataSource;

	public String getDriverName() {
		return driverName;
	}

	public void setDriverName(String driverName) {
		this.driverName = driverName;
	}
	
	public BeanModel getDriverBeanModel(){
		return MiscUtils.buildDriverBeanModel(beanModelSource, getComponentSources());
	}
	
	public GridDataSource getDriverSource(){
		if (dataSource == null) {
			dataSource = new DriverGridDataSource(getDriverName(), driverGrid.getRowsPerPage(), getBussnissService());
		}
		 // fouce the grid to refetch the count;  
		 ((DriverGridDataSource)dataSource).setTotalCount(0);
		 return dataSource;
	}
	
	void onActionFromDeleteLink(int driverId){
		List<Integer> deleteIds = new ArrayList<Integer>();
		deleteIds.add(driverId);
		getBussnissService().deleteDrivers(deleteIds);
		setMessage("删除成功!");
	}

	public Block getNodata() {
		return nodata;
	}

	public Driver getCurrentRow() {
		return currentRow;
	}

	public void setCurrentRow(Driver currentRow) {
		this.currentRow = currentRow;
	}
}

0 请登录后投票
   发表时间:2007-08-25  
使用默认的grid不行吗???
0 请登录后投票
   发表时间:2007-08-25  
看了你的文章,我非常感谢你的慷慨相授,我由于初学tapestry5,而且t4没有学过,t5刚刚学习,很多都是看网友的文章之后修改得来的,你的也被我“抄袭了”,脸红呀,可是好奇心促使我还想看更多的东西,你这个是t5下的吗,public class Drivers extends BasePage 好像是t4的,
另外,import com.javaeye.dengyin2000.gtts.genericdao.Page;  
import com.javaeye.dengyin2000.gtts.service.BussnissService; 这两个类,能贴出来吗,谢谢 
0 请登录后投票
   发表时间:2007-08-25  
BussnissService  这个是业务Service 类。  给你也没有用。

service.pagedQuery  是根据startIndex endIndex 去数据库拿一页的数据。

BasePage 是我写的一个基类。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics