asp.net gridview分页 aspnetpager插件实现 无存储过程 。看了网上很多例子仍然是有很多疑惑,经过一早上的研究,其实用法很简单。可能是网上的例子,调用的方法是干啥用的没有写明白,所以导致一些代码看的云里雾里的。
下面我贴一下自己写的代码,有的地方我会备注,sql语句给参考,具体的什么参数啊啥的按自己的方法搞定吧。很简单
引用AspNetPager.dll文件
首先要在aspx文件里引用aspnetpager,代码:<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>
aspx文件:
<div style="text-align:center;">
<webdiyer:AspNetPager ID="AspNetPagerAskAnswer" runat="server"
AlwaysShow="True" FirstPageText="首页" LastPageText="尾页" NextPageText="下一页"
onpagechanged="AspNetPagerAskAnswer_PageChanged" PrevPageText="上一页"
PageSize="15" CustomInfoHTML="共%PageCount%页,当前为第%CurrentPageIndex%页,每页%PageSize%条"
ShowCustomInfoSection="left" PageIndexBoxType="DropDownList"
ShowPageIndexBox="Always" SubmitButtonText="Go" TextAfterPageIndexBox="页" CustomInfoTextAlign=Center
TextBeforePageIndexBox="转到">
</webdiyer:AspNetPager>
<br />
</div>
aspx.cs文件
public void BindData()
{
int userId = 0;
if (Request.QueryString["id"]!=null)
{
userId = int.Parse(Request.QueryString["id"].ToString());
}
DataSet ds = new DataSet();
StringBuilder strWhere = new StringBuilder();//创建的拼接参数的string,这些都不重要
strWhere.Append(" t.Deleted =0 ");
AspNetPagerAskAnswer.PageSize = 10;//设置分页大小
AspNetPagerAskAnswer.CurrentPageIndex = AspNetPagerAskAnswer.CurrentPageIndex;
AspNetPagerAskAnswer.RecordCount = bll.GetList(strWhere.ToString()).Tables[0].Rows.Count;//获取符合当前条件的总条数
ds = bll.GetListByPage(strWhere.ToString(), "", AspNetPagerAskAnswer.PageSize * (AspNetPagerAskAnswer.CurrentPageIndex - 1)+1, AspNetPagerAskAnswer.PageSize * AspNetPagerAskAnswer.CurrentPageIndex );// 这个方法传三个参数,1.查询条件2.根据哪一列排序 3.当前页的开始是第几条数据(每页条数*(当前页数-1)+1) 4.<span style="font-family: Arial, Helvetica, sans-serif;">当前页的最后一条是第几条数据(当前页数*每页条数) 下面会给sql语句的,在你的dbhelper类自己改一下就好了 </span>
gridView.DataSource = ds;//gridview绑定数据源ds
gridView.DataBind();
}
protected void AspNetPagerAskAnswer_PageChanged(object sender, EventArgs e)
{
BindData();//<span style="font-family: Arial, Helvetica, sans-serif;">AspNetPagerAskAnswer控件绑定的刷新方法,原来的gridview的分页触发方法都可以去掉了</span>
}
sql:
SELECT * FROM
( SELECT ROW_NUMBER() OVER (order by T.LogID desc)AS Row, *
from UserLog t WHERE t.Deleted =0 ) TT
WHERE TT.Row between 1 and 10
DBHelper代码:
/// <summary>
/// 分页获取数据列表
/// </summary>
public DataSet GetListByPage(string strWhere, string orderby, int startIndex, int endIndex)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT * FROM ( ");
strSql.Append(" SELECT ROW_NUMBER() OVER (");
if (!string.IsNullOrEmpty(orderby.Trim()))
{
strSql.Append("order by T." + orderby + " asc");
}
else
{
strSql.Append("order by T.LogID asc");
}
strSql.Append(")AS Row, * from UserLog T ");
if (!string.IsNullOrEmpty(strWhere.Trim()))
{
strSql.Append(" where " + strWhere);
}
strSql.Append(" ) TT");
strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", startIndex, endIndex);
return DbHelperSQL.Query(strSql.ToString());
}
好了,基本上把数据库和参数换成自己的就可以用了,试一下把。