不知道这种分页有什么弊端,请各位指点,
个人觉得要多少才取多少挺好的!
个人觉得要多少才取多少挺好的!
string getnum = Request.QueryString.Get("num");//获取传递过来的“前一页最后一个数据的id”
string getpage ="1";//初始化页数为一,作用是不能点击当前页
//获取当前页的页码
if (Request.QueryString.Get("page") != "" && Request.QueryString.Get("page") != null)
{
getpage = Request.QueryString.Get("page");
}
string select = "select top 3 id,name from holdword where id>=1";//首次选取前三条数据,每页显示三条数据
//选取页数后读取那页的三条数据
if (getnum != "" && getnum != null)
{
select = "select top 3 id,name from holdword where id>" + getnum;
}
OleDbDataReader datareader = users.DataReader(select);//自定义类的一个方法,只是用于读取数据,请自行编写
//显示读取出来的3条数据
while (datareader.Read())
{
Response.Write(datareader[0].ToString()+",");
}
string selectcount = "select count(*) from holdword";//读取数据库条目数
int count = Convert.ToInt16(users.Scalar(selectcount));//自定义类的一个读取条目数
//计算总页数
int pages = count / 3;
if (count % 3 != 0)
{
pages = (count / 3) + 1;
}
//Response.Write(pages);
string reurl = Request.Url.ToString();//获取当前页的地址
//下面方法比较笨,作用是为了获取页不带参数的地址,只会用去掉?后面的字符串的方法
string url = reurl;
string[] label = new string[pages+1];//定义一个数组大小为页数
label[0] = "0";
if (reurl.IndexOf("?page") > -1)//如果地址含有?page表示是选页后的地址
{
Regex delimit = new Regex("\\u003F");//用?进行分隔字符串,获取前面部分,越看越觉得此法很笨
string[] urlall = delimit.Split(reurl);
url = urlall[0];//终于获得纯地址
}
//下面是定义每个页面链接传递的参数,有页数page和前一页的最后一条数据的id
string getnumpage = "0";
for (int i = 0; i < pages; i++)
{
select = "select top 3 id,name from holdword where id>" + getnumpage;
datareader = users.DataReader(select);
//把最后一个数据的id
while (datareader.Read())
{
label[i+1] = datareader[0].ToString();//把每页的最后一个数据id放到num中传递到下一页
getnumpage = datareader[0].ToString();
}
//Response.Write(label[i]);
//Response.Write(getnumpage);
}
//下面作用是使当前页不可按并把label数组的值放到每个链接的num参数中
//Label3.Text = "<a href=\""+url+"?page=1&num=0\">1</a>,";
for (int i = 1; i <= label.Length-1;i++ )
{
if (i == Convert.ToInt16(getpage))
{
Label3.Text += i.ToString() + ",";
}
else
{
Label3.Text += "<a href=\"" + url + "?page=" + i.ToString() + "&num=" + label[i-1].ToString() + "\">" + i.ToString() + "</a>.";
}
}
string getpage ="1";//初始化页数为一,作用是不能点击当前页
//获取当前页的页码
if (Request.QueryString.Get("page") != "" && Request.QueryString.Get("page") != null)
{
getpage = Request.QueryString.Get("page");
}
string select = "select top 3 id,name from holdword where id>=1";//首次选取前三条数据,每页显示三条数据
//选取页数后读取那页的三条数据
if (getnum != "" && getnum != null)
{
select = "select top 3 id,name from holdword where id>" + getnum;
}
OleDbDataReader datareader = users.DataReader(select);//自定义类的一个方法,只是用于读取数据,请自行编写
//显示读取出来的3条数据
while (datareader.Read())
{
Response.Write(datareader[0].ToString()+",");
}
string selectcount = "select count(*) from holdword";//读取数据库条目数
int count = Convert.ToInt16(users.Scalar(selectcount));//自定义类的一个读取条目数
//计算总页数
int pages = count / 3;
if (count % 3 != 0)
{
pages = (count / 3) + 1;
}
//Response.Write(pages);
string reurl = Request.Url.ToString();//获取当前页的地址
//下面方法比较笨,作用是为了获取页不带参数的地址,只会用去掉?后面的字符串的方法
string url = reurl;
string[] label = new string[pages+1];//定义一个数组大小为页数
label[0] = "0";
if (reurl.IndexOf("?page") > -1)//如果地址含有?page表示是选页后的地址
{
Regex delimit = new Regex("\\u003F");//用?进行分隔字符串,获取前面部分,越看越觉得此法很笨
string[] urlall = delimit.Split(reurl);
url = urlall[0];//终于获得纯地址
}
//下面是定义每个页面链接传递的参数,有页数page和前一页的最后一条数据的id
string getnumpage = "0";
for (int i = 0; i < pages; i++)
{
select = "select top 3 id,name from holdword where id>" + getnumpage;
datareader = users.DataReader(select);
//把最后一个数据的id
while (datareader.Read())
{
label[i+1] = datareader[0].ToString();//把每页的最后一个数据id放到num中传递到下一页
getnumpage = datareader[0].ToString();
}
//Response.Write(label[i]);
//Response.Write(getnumpage);
}
//下面作用是使当前页不可按并把label数组的值放到每个链接的num参数中
//Label3.Text = "<a href=\""+url+"?page=1&num=0\">1</a>,";
for (int i = 1; i <= label.Length-1;i++ )
{
if (i == Convert.ToInt16(getpage))
{
Label3.Text += i.ToString() + ",";
}
else
{
Label3.Text += "<a href=\"" + url + "?page=" + i.ToString() + "&num=" + label[i-1].ToString() + "\">" + i.ToString() + "</a>.";
}
}