c# 分页代码

环境是vs2008用c#编写实现分页也就是从数据库里查询一些数据分页显示出来希望高手写得详细一点我是新手网上查的资料看得稀里糊涂的... 环境是vs2008 用c#编写实现分页 也就是从数据库里查询一些数据 分页显示出来 希望高手写得详细一点 我是新手 网上查的资料看得稀里糊涂的 展开
 我来答
aideqiuqian7
2008-10-07 · TA获得超过648个赞
知道小有建树答主
回答量:417
采纳率:0%
帮助的人:319万
展开全部
那个东西要自己写。。

我写了一个,挺复杂的。。。
给你做参考吧。。。。

<%
//分页
int allWriteBackForumNum = AllDataWorkTitle.WriteBackFroumNum(forumTitleId); //得到全部回帖数量,分页用
int maxPageNum = allWriteBackForumNum / 10 + 1;
if (allWriteBackForumNum % 10 == 0 && allWriteBackForumNum != 0) //如果回帖数量是10的倍数,减去最后那个空页
{
maxPageNum = maxPageNum - 1;
}
Response.Write("         ");//输出写空格
Response.Write("共" + (allWriteBackForumNum - 1).ToString() + "楼");
//输出页数并且都加上链接而且页数多的话,显示部分(花线内)
//************************************************************************************************************
Response.Write("    ");
if (allWriteBackForumNum != 0 && maxPageNum <= 10)
{
for (int j = 1; j <= maxPageNum; j++)
{
if (j == pageNum)
{
Response.Write("    <font color = red>[" + j.ToString() + "]</font>     ");
}
else
{
string ee = "<a href=ForumPage.aspx?MclassId=" + mClassId + "&NclassId=" + nClassId + "&BrandId=" + brandId
+ "&ProductId=" + productId + "&ForumTitleId=" + forumTitleId + "&pageNum=" + j.ToString() + ">[" + j.ToString() + "]</a>";
Response.Write("    " + ee + "    ");
}
}
Response.Write("<br>");
}
else if (maxPageNum > 10)
{
if (pageNum == 1)
{
for (int j = 1; j <= 10; j++)
{
if (j == pageNum)
{
Response.Write("    <font color = red>[" + j.ToString() + "]</font>     ");
}
else
{
string ee = "<a href=ForumPage.aspx?MclassId=" + mClassId + "&NclassId=" + nClassId + "&BrandId=" + brandId + "&ProductId=" +
productId + "&ForumTitleId=" + forumTitleId + "&pageNum=" + j.ToString() + ">[" + j.ToString() + "]</a>";
Response.Write("    " + ee + "    ");
}
}
string gg = "<a href=ForumPage.aspx?MclassId=" + mClassId + "&NclassId=" + nClassId + "&BrandId=" + brandId + "&ProductId=" +
productId + "&ForumTitleId=" + forumTitleId + "&pageNum=" + (pageNum + 1).ToString() + ">>></a>";
string ff = "<a href=ForumPage.aspx?MclassId=" + mClassId + "&NclassId=" + nClassId + "&BrandId=" + brandId + "&ProductId=" +
productId + "&ForumTitleId=" + forumTitleId + "&pageNum=" + maxPageNum + ">...." + maxPageNum.ToString() + "</a>";
Response.Write("    " + gg + "    " + ff + "    ");
}
else if (pageNum == maxPageNum)
{
string ff = "<a href=ForumPage.aspx?MclassId=" + mClassId + "&NclassId=" + nClassId + "&BrandId=" + brandId + "&ProductId=" +
productId + "&ForumTitleId=" + forumTitleId + "&pageNum=1>1....</a>";
string gg = "<a href=ForumPage.aspx?MclassId=" + mClassId + "&NclassId=" + nClassId + "&BrandId=" + brandId + "&ProductId=" +
productId + "&ForumTitleId=" + forumTitleId + "&pageNum=" + (pageNum - 1).ToString() + "><<</a>";
Response.Write("    " + ff + "    " + gg + "    ");
for (int j = maxPageNum - 9; j <= maxPageNum; j++)
{
if (j == pageNum)
{
Response.Write("    <font color = red>[" + j.ToString() + "]</font>     ");
}
else
{
string ee = "<a href=ForumPage.aspx?MclassId=" + mClassId + "&NclassId=" + nClassId + "&BrandId=" + brandId
+ "&ProductId=" + productId + "&ForumTitleId=" + forumTitleId + "&pageNum=" + j.ToString() + ">[" + j.ToString() + "]</a>";
Response.Write("    " + ee + "    ");
}
}
}
else
{
string ff = "<a href=ForumPage.aspx?MclassId=" + mClassId + "&NclassId=" + nClassId + "&BrandId=" + brandId + "&ProductId=" +
productId + "&ForumTitleId=" + forumTitleId + "&pageNum=1>1....</a>";
string gg = "<a href=ForumPage.aspx?MclassId=" + mClassId + "&NclassId=" + nClassId + "&BrandId=" + brandId + "&ProductId=" +
productId + "&ForumTitleId=" + forumTitleId + "&pageNum=" + (pageNum - 1).ToString() + "><<</a>";
Response.Write("    " + ff + "    " + gg + "    ");
if (pageNum - 1 > 5 && maxPageNum - pageNum > 5)
{
for (int j = pageNum - 4; j <= pageNum + 6; j++)
{
if (j == pageNum)
{
Response.Write("    <font color = red>[" + j.ToString() + "]</font>     ");
}
else
{
string ee = "<a href=ForumPage.aspx?MclassId=" + mClassId + "&NclassId=" + nClassId + "&BrandId=" + brandId
+ "&ProductId=" + productId + "&ForumTitleId=" + forumTitleId + "&pageNum=" + j.ToString() + ">[" + j.ToString() + "]</a>";
Response.Write("    " + ee + "    ");
}
}
}
else if (pageNum - 1 <= 5)
{
for (int j = 1; j <= 10; j++)
{
if (j == pageNum)
{
Response.Write("    <font color = red>[" + j.ToString() + "]</font>    ");
}
else
{
string ee = "<a href=ForumPage.aspx?MclassId=" + mClassId + "&NclassId=" + nClassId + "&BrandId=" +
brandId + "&ProductId=" + productId + "&ForumTitleId=" + forumTitleId + "&pageNum=" + j.ToString() + ">[" +
j.ToString() + "]</a>";
Response.Write("    " + ee + "    ");
}
}
}
else
{
for (int j = maxPageNum - 10; j <= maxPageNum; j++)
{
if (j == pageNum)
{
Response.Write("    <font color = red>[" + j.ToString() + "]</font>    ");
}
else
{
string ee = "<a href=ForumPage.aspx?MclassId=" + mClassId + "&NclassId=" + nClassId + "&BrandId=" +
brandId + "&ProductId=" + productId + "&ForumTitleId=" + forumTitleId + "&pageNum=" + j.ToString() + ">[" + j.ToString() + "]</a>";
Response.Write("    " + ee + "    ");
}
}
}
string hh = "<a href=ForumPage.aspx?MclassId=" + mClassId + "&NclassId=" + nClassId + "&BrandId=" + brandId + "&ProductId=" +
productId + "&ForumTitleId=" + forumTitleId + "&pageNum=" + (pageNum + 1).ToString() + ">>></a>";
string rr = "<a href=ForumPage.aspx?MclassId=" + mClassId + "&NclassId=" + nClassId + "&BrandId=" + brandId + "&ProductId=" +
productId + "&ForumTitleId=" + forumTitleId + "&pageNum=" + maxPageNum + ">...." + maxPageNum.ToString() + "</a>";
Response.Write("    " + hh + "    " + rr + "    ");
}
}
//************************************************************************************************************
//输出页数并且都加上链接而且页数多的话,显示部分(花线内)
%>
peiyanfei2008
2008-10-07 · 超过27用户采纳过TA的回答
知道答主
回答量:104
采纳率:0%
帮助的人:83.7万
展开全部
写那么多有什么用 分页吗 给你个分页的sql语句 不就行了
select top 20 * from userposts where(titleid not in (select top 10 titleid from userposts))

上面的意思就是 取出20条内容 从第10条开始 也就是11-30条的内容
你绑定数据的时候 传sql语句 就传这个 到时候 可以 count(*) 查出所有的行数 然后吧 top20 和 后面的 top10 写成变量 分页的时候传进去2个变量
然后执行sql语句 数据结果绑定到控件 然后显示 想怎么分就怎么分了

如果数据量少就用 gridview 自带的分页 方便(自带的分页是一次吧所有的数据都加载到内存中) 如果数据多就算了 只能用上面的sql语句了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
萧竹夜
2008-10-07 · TA获得超过3668个赞
知道小有建树答主
回答量:1520
采纳率:0%
帮助的人:0
展开全部
LZ好,#include<stdio.h>
#include<math.h>

void main()
{
float a,b,c,p,s; //这里用double比较好
printf("Input a,b,c:\n");
scanf("%f%f%f",&a,&b,&c); //scanf把三个double型的变量输送到a,b,c的地址,故用取地址符&

//以下代码帮你重新写过,因为你写的比较乱。。。
if(a>0.0 && b>0.0 && c>0.0 && fabs(a-b) < c && fabs(b-c) < a && fabs(a-c) <b)
{
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("The result is %f\n",s);
}
else
printf("Data error!\n");

} 6477希望对你有帮助!

参考资料: . hxsfgah

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友40a74a492
2008-10-07 · 超过12用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:35.5万
展开全部
这个是通过数据库实现在的,写一个分页存储过程。之后,把每次你要显示的数据段给数据库就可以了。

分页存储过程;

create procedure sp_GetCurentPage
(@pagesize int, --页面的大小
@pageindex int) --当然的页号
as
begin
with temptbl as (
SELECT ROW_NUMBER() OVER (ORDER BY address desc)AS Row, * from test )

SELECT * FROM temptbl where Row between

(@pageindex-1)*@pagesize+1 and (@pageindex-1)*@pagesize+@pagesize

end

这样在你的按钮事件里,每次就是重新绑定一下数据显示就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友638b535
2008-10-07 · TA获得超过234个赞
知道小有建树答主
回答量:268
采纳率:0%
帮助的人:335万
展开全部
GridView本身就有分页功能,将AllowPaging设置成True就可以了。
或者你自己写一个DataSet用DataAdapter去Fill这个DataSet,再将DataSet绑定到GridView。
int currentIndex = 0;
int pageSize = 5;

string orderSQL = "SELECT * FROM Orders ORDER BY OrderID";
// Assumes that connection is a valid SqlConnection object.
SqlDataAdapter adapter = new SqlDataAdapter(orderSQL, connection);

DataSet dataSet = new DataSet();
adapter.Fill(dataSet, currentIndex, pageSize, "Orders");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式