我的转正任务给部长看了之后,要求做一下真正的分页,而不是用 GridView 自带的分页功能,的确,我也觉得那个不好,那么就做吧,做了就可以转正了,哈哈哈!
---分页----
步骤一:存储过程 create PROCEDURE [dbo].[news_selectByIndex]
@startIndex int ,
@endIndex int
AS
BEGIN
with temptbl as (
SELECT ROW_NUMBER() OVER (ORDER BY id )AS Row,* from news
)
SELECT * FROM temptbl where Row between @startIndex and @endIndex
END
步骤二:在SQLHelper中添加相应的方法
public SqlDataReader ExecuteNewsReader(CommandType cmdType, params SqlParameter[] cmdParms)
{
try
{
conn = GetConn();
string cmdText = "news_selectByIndex";
cmd = new SqlCommand(cmdText,conn);
cmd.CommandType = cmdType;
cmd.Parameters.AddRange(cmdParms);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
catch
{
conn.Close();
throw;
}
}
步骤三:在页面中添加 ASPNETPager 控件
页首添加
<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>
<webdiyer:AspNetPager ID="AspNetPager1" CssClass="paginator" CurrentPageButt runat="server" AlwaysShow="True" FirstPageText="首页" LastPageText="尾页" NextPageText="下一页" PageSize="8" PrevPageText="上一页" ShowCustomInfoSection="Left" ShowInputBox="Never" CustomInfoTextAlign="Left" LayoutType="Table" >
</webdiyer:AspNetPager>
步骤四:为 ASPNETPager 控件添加 CSS 属性
.paginator
{
font: 12px Arial, Helvetica, sans-serif;
padding: 10px 20px 10px 0;
margin: 0px;
}
.paginator a
{
border: solid 1px #ccc;
color: #0063dc;
cursor: pointer;
text-decoration: none;
}
.paginator a:visited
{
padding: 1px 6px;
border: solid 1px #ddd;
background: #fff;
text-decoration: none;
}
.paginator .cpb
{
border: 1px solid #F50;
font-weight: 700;
color: #F50;
background-color: #ffeee5;
}
.paginator a:hover
{
border: solid 1px #F50;
color: #f60;
text-decoration: none;
}
.paginator a, .paginator a:visited, .paginator .cpb, .paginator a:hover
{
float: left;
height: 16px;
line-height: 16px;
min- 10px;
_ 10px;
margin-right: 5px;
text-align: center;
white-space: nowrap;
font-size: 12px;
font-family: Arial,SimSun;
padding: 0 3px;
}
步骤五:编写页面后台代码
public void BindData()
{
//绑定语句
repNews.DataSource = new SQLHelper().ExecuteNewsReader(CommandType.StoredProcedure,
new SqlParameter("@startIndex", AspNetPager1.StartRecordIndex),
new SqlParameter("@endIndex", AspNetPager1.EndRecordIndex));
repNews.DataBind();
this.AspNetPager1.CustomInfoHTML = string.Format("当前第{0}/{1}页 共{2}条记录 每页{3}条", new object[] { this.AspNetPager1.CurrentPageIndex, this.AspNetPager1.PageCount, this.AspNetPager1.RecordCount, this.AspNetPager1.PageSize });
}
protected void AspNetPager1_PageChanged(object src, EventArgs e)
{
BindData();
}
然后修改后台代码的各个地方,需要使用 BindDate() 的时候都改过来,例如 Page_Load() 还有删除了新闻分类后等等