<p>分类:<asp:DropDownList ID="ddlCategory" runat="server" AutoPostBack="True"></asp:DropDownList></p>
<asp:GridView ID="gvArticleList" runat="server" AutoGenerateColumns="False" OnRowCommand="gvArticleList_RowCommand"
cssselectorclass="PrettyGridView" DataSourceID="objAricles" AllowPaging="True" DataKeyNames="ID" PageSize="2" >
<Columns>
<asp:TemplateField HeaderText="Title">
<ItemTemplate>
<a href='<%# Util.AppVirtualPath + "/Article/" + Eval("ID") %>.aspx'
title='<%
# Eval("Title")%>' ><%
# Eval("Title")%>
</a> (<%
# Convert.ToDateTime(Eval("ModifiedDate")).ToLocalTime().ToString("yy-MM-dd HH:mm") %>)
</ItemTemplate>
</asp:TemplateField>
<asp:CheckBoxField DataField="Visible" HeaderText="Visible" />
<asp:BoundField DataField="Hits" HeaderText="Views" >
</asp:BoundField>
<asp:TemplateField>
<ItemTemplate>
<a href='Edit/Article/<%# Eval("ID") %>.aspx' title="Edit Article">Edit</a>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandArgument="ID" CommandName="Delete"
OnClientClick="return confirm('您真的要删除吗?');"
Text="Delete"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerSettings Position="Bottom" Mode="NumericFirstLast" PageButtonCount="5" />
</asp:GridView>
<asp:ObjectDataSource ID="objAricles" runat="server" SelectMethod="GetContents"
TypeName="MK2.Framework.BLL.ContentManager" OldValuesParameterFormatString="original_{0}"
SelectCountMethod="GetContentCount"
EnablePaging="True" MaximumRowsParameterName="pageSize" DeleteMethod="Delete">
<SelectParameters>
<asp:ControlParameter ControlID="ddlCategory" Name="categoryID" PropertyName="SelectedValue"
Type="Int32" />
</SelectParameters>
<DeleteParameters>
<asp:Parameter Name="original_ID" Type="Int32" />
</DeleteParameters>
</asp:ObjectDataSource>关键在于GirdView会自动调用ObjectDataSource的SelectMethod,并将PageSize赋给ObjectDataSource的MaximumRowsParameterName参数,这里我将它设置为pageSize,此外GirdView还有一个参数对应着ObjectDataSource的startRowIndex,这里我使用默认名startRowIndex。
下面是DAL层中的两个分页需要用到的方法:
public static Content[] GetContents(int categoryID, int pageSize, int startRowIndex)
{
return _contentService.GetContents(categoryID, pageSize, (startRowIndex / pageSize + 1));
}
public static int GetContentCount(int categoryID)
{
return _contentService.GetContentCount(categoryID);
}ObjectDataSource是通过SelectCountMethod="GetContentCount" 方法来获取根据categoryID的数据总条数。
categoryID参数通过DropDownList .SelectedValue 确定的。
这种方案快速而又高效,GirdView每次只是获取PageSize条记录,比起完全自定义的分页,的确剩掉了许多代码。
效果图如下:
posted @ 2006-12-14 03:25 MK2 阅读(844) 评论(0) 编辑


