今天做一个页面,用DataList分页,并且要实现 "显示N-M条"!
在实现过程中,遇到了困难就是第一页和第二页的当前页码都为0.
用Debug跟踪了好久,才解决.贴出来,供自己参考,并请大家指点.
string
sql;
GetData GD = new GetData();
DataSet ds = new DataSet();
SqlConnection conn;
int PageSize; // 每页包含条数
int RecordCount; // 获得总记录数
int PageCount; // 获得总页数
int CurrentPage; // 当前页数
protected void Page_Load( object sender, EventArgs e)
... {
if (Session["username"] == null || Session["id"] == null)
...{
Response.Redirect("login.aspx");
}
conn = GD.Conn();
conn.Open();
//设定PageSize
PageSize = 4;
if (!IsPostBack)
...{
ViewState["CurrentPage"] = 1;
//GetProductCollection();
ViewState["PageIndex"] = 0;
//计算总共有多少条记录
RecordCount = CalculateRecord();
lblCount.Text = RecordCount.ToString();
lblCount2.Text = RecordCount.ToString();
//计算总共有多少页
if (RecordCount == 0)
...{
PageCount = 1;
lblPageCount.Text = "1";
}
else
...{
PageCount = RecordCount % PageSize == 0 ? RecordCount / PageSize : RecordCount / PageSize + 1;
lblPageCount.Text = PageCount.ToString();
}
//if (PageCount == 0)
//{
// lblPageCount.Text = "1";
// //当前页显示从第几条到第几条
// if (RecordCount == 0)
// {
// lblCurrentPageFirst.Text = "0";
// lblCurrentPageLast.Text = "0";
// }
// else
// {
// lblCurrentPageFirst.Text = "1";
// lblCurrentPageLast.Text = RecordCount.ToString();
// }
//}
//else
//{
// lblPageCount.Text = PageCount.ToString();
// lblCurrentPageFirst.Text = Convert.ToString((Convert.ToInt32(ViewState["PageIndex"].ToString())) * PageSize + 1);
// lblCurrentPageLast.Text = Convert.ToString(Convert.ToInt32(ViewState["PageIndex"].ToString() + 1) * PageSize);
//}
//if (PageCount == Convert.ToInt32(ViewState["PageIndex"].ToString()))
//{
// lblCurrentPageLast.Text = PageCount.ToString();
//}
//保存总页数的值
ViewState["PageCount"] = PageCount;
GetProductCollection();
}
}
/**/ /// <summary>
/// 获取收藏夹中商品的信息
/// </summary>
public void GetProductCollection()
... {
int startIndex;
//设定导入的起终地址
startIndex = CurrentPage * PageSize;
sql = "select * from product";
DataSet ds = new DataSet();
SqlCommand comm = new SqlCommand(sql, conn);
SqlDataAdapter sda = new SqlDataAdapter(comm);
sda.Fill(ds, startIndex, PageSize, "product");
DataList1.DataSource = ds.Tables["product"].DefaultView;
DataList1.DataBind();
btnprev.Enabled = true;
//btnprev1.Enabled = true;
btnnext.Enabled = true;
//btnnext1.Enabled = true;
if (CurrentPage == (PageCount - 1))
...{
btnnext.Enabled = false;
//btnnext1.Enabled = false;
}
if (CurrentPage == 0)
...{
btnprev.Enabled = false;
//btnprev1.Enabled = false;
}
//当前页
lblCurrentPage.Text = Convert.ToString((CurrentPage + 1));
lblCurrentPage2.Text = Convert.ToString((CurrentPage + 1));
TextBox1.Text = Convert.ToString((CurrentPage + 1));
//将其值保存在这个页面中
ViewState["PageIndex"] = CurrentPage;
if (PageCount == 0)
...{
//当前页显示从第几条到第几条
if (RecordCount == 0)
...{
lblCurrentPageFirst.Text = "0";
lblCurrentPageLast.Text = "0";
}
else
...{
lblCurrentPageFirst.Text = "1";
lblCurrentPageLast.Text = RecordCount.ToString();
}
}
else if (CurrentPage == 0)//当前页为第一页
...{
lblCurrentPageFirst.Text = "1";
lblCurrentPageLast.Text = PageSize.ToString();
}
else
...{
lblCurrentPageFirst.Text = Convert.ToString((CurrentPage) * PageSize + 1);
lblCurrentPageLast.Text = Convert.ToString((CurrentPage + 1) * PageSize);
}
if (PageCount == (CurrentPage + 1))//当前页为最后一页
...{
lblCurrentPageLast.Text = lblCount.Text.ToString();
}
}
public void Page_OnClick(Object sender, CommandEventArgs e)
... {
//当前页
CurrentPage = (int)ViewState["PageIndex"];
//总页数
PageCount = (int)ViewState["PageCount"];
string cmd = e.CommandName;
//判断cmd,以判定翻页方向
switch (cmd)
...{
case "btnnext":
if (CurrentPage < (PageCount - 1)) CurrentPage++;
break;
case "btnprev":
if (CurrentPage > 0) CurrentPage--;
break;
// //最后一页
//case "btnlast":
// CurrentPage = PageCount - 1;
// break;
// //第一页
//default:
// CurrentPage = System.Convert.ToInt32(cmd);
// break;
}
//当前页
ViewState["PageIndex"] = CurrentPage;
GetProductCollection();
}
GetData GD = new GetData();
DataSet ds = new DataSet();
SqlConnection conn;
int PageSize; // 每页包含条数
int RecordCount; // 获得总记录数
int PageCount; // 获得总页数
int CurrentPage; // 当前页数
protected void Page_Load( object sender, EventArgs e)
... {
if (Session["username"] == null || Session["id"] == null)
...{
Response.Redirect("login.aspx");
}
conn = GD.Conn();
conn.Open();
//设定PageSize
PageSize = 4;
if (!IsPostBack)
...{
ViewState["CurrentPage"] = 1;
//GetProductCollection();
ViewState["PageIndex"] = 0;
//计算总共有多少条记录
RecordCount = CalculateRecord();
lblCount.Text = RecordCount.ToString();
lblCount2.Text = RecordCount.ToString();
//计算总共有多少页
if (RecordCount == 0)
...{
PageCount = 1;
lblPageCount.Text = "1";
}
else
...{
PageCount = RecordCount % PageSize == 0 ? RecordCount / PageSize : RecordCount / PageSize + 1;
lblPageCount.Text = PageCount.ToString();
}
//if (PageCount == 0)
//{
// lblPageCount.Text = "1";
// //当前页显示从第几条到第几条
// if (RecordCount == 0)
// {
// lblCurrentPageFirst.Text = "0";
// lblCurrentPageLast.Text = "0";
// }
// else
// {
// lblCurrentPageFirst.Text = "1";
// lblCurrentPageLast.Text = RecordCount.ToString();
// }
//}
//else
//{
// lblPageCount.Text = PageCount.ToString();
// lblCurrentPageFirst.Text = Convert.ToString((Convert.ToInt32(ViewState["PageIndex"].ToString())) * PageSize + 1);
// lblCurrentPageLast.Text = Convert.ToString(Convert.ToInt32(ViewState["PageIndex"].ToString() + 1) * PageSize);
//}
//if (PageCount == Convert.ToInt32(ViewState["PageIndex"].ToString()))
//{
// lblCurrentPageLast.Text = PageCount.ToString();
//}
//保存总页数的值
ViewState["PageCount"] = PageCount;
GetProductCollection();
}
}
/**/ /// <summary>
/// 获取收藏夹中商品的信息
/// </summary>
public void GetProductCollection()
... {
int startIndex;
//设定导入的起终地址
startIndex = CurrentPage * PageSize;
sql = "select * from product";
DataSet ds = new DataSet();
SqlCommand comm = new SqlCommand(sql, conn);
SqlDataAdapter sda = new SqlDataAdapter(comm);
sda.Fill(ds, startIndex, PageSize, "product");
DataList1.DataSource = ds.Tables["product"].DefaultView;
DataList1.DataBind();
btnprev.Enabled = true;
//btnprev1.Enabled = true;
btnnext.Enabled = true;
//btnnext1.Enabled = true;
if (CurrentPage == (PageCount - 1))
...{
btnnext.Enabled = false;
//btnnext1.Enabled = false;
}
if (CurrentPage == 0)
...{
btnprev.Enabled = false;
//btnprev1.Enabled = false;
}
//当前页
lblCurrentPage.Text = Convert.ToString((CurrentPage + 1));
lblCurrentPage2.Text = Convert.ToString((CurrentPage + 1));
TextBox1.Text = Convert.ToString((CurrentPage + 1));
//将其值保存在这个页面中
ViewState["PageIndex"] = CurrentPage;
if (PageCount == 0)
...{
//当前页显示从第几条到第几条
if (RecordCount == 0)
...{
lblCurrentPageFirst.Text = "0";
lblCurrentPageLast.Text = "0";
}
else
...{
lblCurrentPageFirst.Text = "1";
lblCurrentPageLast.Text = RecordCount.ToString();
}
}
else if (CurrentPage == 0)//当前页为第一页
...{
lblCurrentPageFirst.Text = "1";
lblCurrentPageLast.Text = PageSize.ToString();
}
else
...{
lblCurrentPageFirst.Text = Convert.ToString((CurrentPage) * PageSize + 1);
lblCurrentPageLast.Text = Convert.ToString((CurrentPage + 1) * PageSize);
}
if (PageCount == (CurrentPage + 1))//当前页为最后一页
...{
lblCurrentPageLast.Text = lblCount.Text.ToString();
}
}
public void Page_OnClick(Object sender, CommandEventArgs e)
... {
//当前页
CurrentPage = (int)ViewState["PageIndex"];
//总页数
PageCount = (int)ViewState["PageCount"];
string cmd = e.CommandName;
//判断cmd,以判定翻页方向
switch (cmd)
...{
case "btnnext":
if (CurrentPage < (PageCount - 1)) CurrentPage++;
break;
case "btnprev":
if (CurrentPage > 0) CurrentPage--;
break;
// //最后一页
//case "btnlast":
// CurrentPage = PageCount - 1;
// break;
// //第一页
//default:
// CurrentPage = System.Convert.ToInt32(cmd);
// break;
}
//当前页
ViewState["PageIndex"] = CurrentPage;
GetProductCollection();
}