人无信不立/2008-04-26 22:30

MonoRail学习笔记十四:分页功能的使用

在Asp.net开发中的GridView功能比较强大,可以方便的进行分页等操作。
在MonoRail中也提供了方便的分页功能,只要使用PaginationHelper就可以了。当然,你如果是在数据库端进行分页的话就不是这篇笔记考虑的范围了。

Controller代码:
Model
        public void List()
        
{
            IList list 
= new ArrayList();

            
for (int i = 1; i < 36; i++)
            
{
                User user 
= new User();
                user.Id 
= i;
                user.Name 
= "永春_" + i;
                user.Email 
= "GSpring_" + i + "@hotmail.com";
                list.Add(user);
            }


            PropertyBag.Add(
"list1", PaginationHelper.CreatePagination(this, list, 10));
        }

vm中代码:
#foreach($item in $list1)
#beforeall
       
<table>
               
<tr>
               
<th>ID</th>
               
<th>姓名</th>
               
<th>邮件地址</th>
               
</tr>
#before
       
<tr
#odd
       Style
='color:gray'>
#even
       Style='color:red'>

#each
       
<td>$item.Id</td>
       
<td>$item.Name</td>
       
<td>$item.Email</td>
#after
       
</tr>

#afterall
       
</table>

#nodata
       没有数据
#end
<p>
当前显示 $list1.FirstItem - $list1.LastItem 条 共 $list1.TotalItems 条
</p>

<p>
#if ($list1.HasFirst)
    $PaginationHelper.CreatePageLink( 1, "第一页" )
#end
#if ($list1.HasPrevious)
    $PaginationHelper.CreatePageLink( $list1.PreviousIndex, "前一页" )
#end
#if ($list1.HasNext)
    $PaginationHelper.CreatePageLink( $list1.NextIndex, "后一页" )
#end
#if ($list1.HasLast)
    $PaginationHelper.CreatePageLink( $list1.LastIndex, "末页" )
#end
<p>
#foreach ( $item in [1..$list1.LastIndex] )
$PaginationHelper.CreatePageLink( $item, $item.toString() )
#end


所有的分页相关功能几乎都在PaginationHelper中实现了,我们只要调用就可以了。
最后的效果如下:

提供了两种方式的分页,按页码和按前后页的方式,当然也可以定制自己需要的分页方式,代码很简单。
posted @ 2007-11-02 15:02 永春 阅读(857) 评论(6)  编辑 收藏 所属分类: MonoRail

  回复  引用  查看    
#1楼 2007-11-05 16:41 | 老刘.      
#if($tag)
#component(DiggStylePagination with "page=$albums" "url=list.html?tag=$tag")
#elseif ($band)
#component(DiggStylePagination with "page=$albums" "url=list.html?band=$band")
#else
#component(DiggStylePagination with "page=$albums")
#end

我来做个补充 :)

castle 中同样提供了一些 component的支持,使用起来也非常方便。
不过ror阵营中的老大 dave tomas 说,ror仿佛不打算把精力放在component了,不知道castle会怎么做,component不知道会怎么样。

支持GSpring ~~~~
  回复  引用    
#2楼 2007-12-19 14:54 | Luc9i [未注册用户]
ror主要是想把所有类似于component的功能做成插件的形式,所以ror阵营非常不鼓励使用component,mono。。既然是微软系的,component还是必不可少的
  回复  引用    
#3楼 2008-01-31 17:23 | XWolf [未注册用户]
LZ,如果要做成一个页码的下拉列表,选中时跳转,或者是输入页码跳转,大概怎么创建LINK?给个思路好吗?
  回复  引用  查看    
#4楼 [楼主]2008-02-01 09:41 | 永春      
@XWolf
输入页码跳转的方法:
<form name="form1">
<input name="page" type=text />
<input type=button value="go" onclick=window.location.href='/paginated/list.rails?page=' + document.form1.page.value" />
</form>
  回复  引用    
#5楼 2008-02-01 11:15 | XWolf [未注册用户]
受教了,谢谢...
我去试试看

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: