一个购物车系统,但是物品很多,平均每个栏目就有 1000条信,因为每条信息 都包图片的显示。
所以虽然数据很少,但是加载起来也会很慢。这里我用 datagrid,gridview 显示数据, 数据处理采用了分页存储过程(邹建大哥分页存储过程),每次显示一页数据。但是下面的,上一页 1 2 3 4 5 下一页 分页,我却没有设计好 ?我在网上找了一些答案:一种是调用JS ,我觉得 datagrid,gridview 通过分页显示数据 与 下面的 页码JS代码是乎不能很好的联系起来。本人对 JS也不是很熟悉。
二种就是 得到总页数,然后分割,分布在页面上。 我用了一个 datalist 显示页码。 每个页面都是一个超连接,
但是 发现控制起来 蛮麻烦 。功能我基本上已经实现了,但是 这样做好像不怎么好。注意 :datagrid,gridview 显示数据,我只需要传递一个页码,就从数据库把当前页下载下来 。
但是 下面的 上一页 1 2 3 4 5 下一页 我该如何设计,有必要用 JS MA ?大家有 什么好的建议 ?
所以虽然数据很少,但是加载起来也会很慢。这里我用 datagrid,gridview 显示数据, 数据处理采用了分页存储过程(邹建大哥分页存储过程),每次显示一页数据。但是下面的,上一页 1 2 3 4 5 下一页 分页,我却没有设计好 ?我在网上找了一些答案:一种是调用JS ,我觉得 datagrid,gridview 通过分页显示数据 与 下面的 页码JS代码是乎不能很好的联系起来。本人对 JS也不是很熟悉。
二种就是 得到总页数,然后分割,分布在页面上。 我用了一个 datalist 显示页码。 每个页面都是一个超连接,
但是 发现控制起来 蛮麻烦 。功能我基本上已经实现了,但是 这样做好像不怎么好。注意 :datagrid,gridview 显示数据,我只需要传递一个页码,就从数据库把当前页下载下来 。
但是 下面的 上一页 1 2 3 4 5 下一页 我该如何设计,有必要用 JS MA ?大家有 什么好的建议 ?
解决方案 »
- 求一个sql语句查询
- |zyciis| 为什么我在网上找到的忖出Excel的方法在我这里忖出来一片空白呢
- 给看个小程序,谢谢!
- 客户的奇怪需求,高手进来,能大出给马上50
- 郁闷!脚本中使用asp:requiredfieldvalidator以后,定义的<asp:button的事件就不管用了
- vc运行错误,提示“池中无法获取链接”
- winxp系统下js打开新窗口异常
- string aaa = "0103",如何做到 select * from info where 表中字段“地区代码”的前两位 = aaa.Substring(0,2);
- 比较菜鸟,学习代码,有个奇怪的代码。求高手
- 把CheckBox添加到ListBox中
- GridView“GridView1”激发了未处理的事件“PageIndexChanging”是啥问题???
- DataTable中数据排序的问题
<script type="text/javascript">
//得到地址栏传递参数的函数
function QueryString(qs)
{
var s = location.href;
s = s.replace("?","?&").split("&");
var re = "";
for(i=1;i<s.length;i++)
if(s[i].indexOf(qs+"=")==0)
re = s[i].replace(qs+"=","");
return re;
}
</script>再根据url传递的当前页数调整 一页 1 2 3 4 5 下一页 分页
{
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls; /// <summary>
/// CutPage 的摘要说明。
/// </summary>
public partial class CutPage : System.Web.UI.UserControl
{
private int CurPage;
private int TotalPage;
private int TotalNum;
private int PageSize;
private string PageName;
private string PageUrl;
protected void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
}
public void Installize(int pSize,int tNum,int cPage,string pName)
{
this.PageSize=pSize;
this.TotalNum=tNum;
this.CurPage=cPage;
this.PageName=pName;
if(pSize==0)
{
this.PageSize=1;
}
if(cPage==0)
{
this.CurPage=1;
}
}
public void AllRight()
{
if((TotalNum%PageSize)==0)
{
TotalPage=TotalNum/PageSize;
}
else
{
TotalPage=(TotalNum-(TotalNum%PageSize))/PageSize +1;
}
if(PageName.IndexOf("?")>0)
{
PageUrl=PageName + "&";
}
else
{
PageUrl=PageName + "?";
}
if(CurPage>TotalPage){CurPage=TotalPage;}
td1.InnerHtml=" ";
td1.InnerHtml+="共<font color=blue>" + TotalNum + "</font>条 ";
td1.InnerHtml+="共<font color=blue>"+ TotalPage +"</font>页 ";
td1.InnerHtml+="当前是第" + CurPage.ToString() + "页 ";
td1.InnerHtml+="<a href=" + PageUrl + "Page=1><font face=webdings>9</font></a> ";
td1.InnerHtml+="<a href=" + PageUrl + "Page=" + (CurPage-1).ToString() + "><FONT face=Webdings>7</font></a> ";
for(int i=1;i<=TotalPage;i++)
{
if(i==CurPage)
{
td1.InnerHtml+="<a href=" + PageUrl + "Page=" + i.ToString() + "><FONT color=red>" +i.ToString() +"</font></a> ";
}
else
{
td1.InnerHtml+="<a href=" + PageUrl + "Page=" + i.ToString() + ">" +i.ToString() +"</a> ";
}
}
td1.InnerHtml+="<a href=" + PageUrl + "Page=" + (CurPage+1).ToString() + "><FONT face=Webdings>8</FONT></a> ";
td1.InnerHtml+="<a href=" + PageUrl + "Page=" + TotalPage.ToString() + "><font face=Webdings>:</font></a>";
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
/// </summary>
private void InitializeComponent()
{ }
#endregion
}
}
<FONT face="宋体"></FONT>
<table bgcolor="#aaaaaa" border="0" cellpadding="0" cellspacing="0" width="90%">
<tr>
<td>
<table class="border" border="0" cellpadding="3" cellspacing="1" width="100%" style="WORD-BREAK:break-all">
<tr bgcolor="#336699" class="title" height="28">
<td bgcolor="#F0F0F0" runat="server" id="td1">
</td>
</tr>
</table>
</td>
</tr>
</table>调用试例
AccountManage.aspx<%@ Register TagPrefix="uc1" TagName="CutPage" Src="CutPage.ascx" %>
...
<asp:repeater id="AccoutList" Runat="server">
<ItemTemplate>
<tr bgcolor="#f7f7f7" class="title" height="28">
<td><%# DataBinder.Eval(Container.DataItem, "Ac_Id") %>
</td>
<td><%# DataBinder.Eval(Container.DataItem, "Ac_Alias") %>
</td>
<td><%# DataBinder.Eval(Container.DataItem, "Ac_Am_Master") %>
</td>
<td><%# DataBinder.Eval(Container.DataItem, "Ac_Gm_Name") %></td>
<td><%# DataBinder.Eval(Container.DataItem, "Ac_Sv_Name") %></a>
</td>
<td><%# DataBinder.Eval(Container.DataItem, "Ac_Currency") %>
</td>
<td><%# DataBinder.Eval(Container.DataItem, "Ac_Amount") %></td>
<td></td>
</tr>
</ItemTemplate>
</asp:repeater>
<tr class="title" bgColor="#336699" height="28">
<td bgColor="#f7f7f7" colSpan="8"><uc1:cutpage id="CutPage1" runat="server"></uc1:cutpage></td>
</tr>
AccountManage.aspx.csint PageSize=15;
int TotalNum;
int CurPage;
TotalNum = ....
if(PublicClass.IsNumeric(Request["Page"]))
{
CurPage=Int32.Parse(Request["Page"]);
}
if(CurPage<=0)
{
CurPage=1;
} CutPage1.Installize(PageSize,TotalNum,CurPage,"Account_Manage.Aspx");
CutPage1.AllRight();
function ad_cutPage(jsUrl,pageCount,curPage,detNum,pagePaName)
{
var minPage;
var maxPage;
var showLend;
var lastPage;
if(jsUrl.indexOf("?")==(-1)){
showLend="?";
}
else
{
showLend="&";
}
if(curPage==1)
{
if(detNum*2>=pageCount){
minPage=1;
maxPage=pageCount;
}
else
{
minPage=1;
if(detNum*2<=pageCount)
{
maxPage=detNum*2;
}
else
{
maxPage=pageCount;
}
}
}
else
{
if(detNum>=curPage){
minPage=1;
if(detNum+curPage<=pageCount)
{
maxPage=curPage+detNum;
}
else
{
maxPage=pageCount;
}
}
else
{
minPage=curPage-detNum;
if(detNum+curPage<=pageCount)
{
maxPage=curPage+detNum;
}
else
{
maxPage=pageCount;
}
}
}
document.write(" <a href="+jsUrl+showLend+pagePaName+"=1><font face='webdings'>9</font></a>");
document.write(" <a href="+jsUrl+showLend+pagePaName+"=" + minPage + "><font face='webdings'>7</font></a>");
for(i=minPage;i<=maxPage;i++)
{
if(i==curPage){
document.write(" <a href="+jsUrl+showLend+pagePaName+"="+i+"><font color=red>" + i + "</font></a>");
}
else
{
document.write(" <a href="+jsUrl+showLend+pagePaName+"="+i+">" + i + "</a>");
}
}
document.write(" <a href="+jsUrl+showLend+pagePaName+"=" + maxPage + "><font face='webdings'>8</font></a>");
document.write(" <a href="+jsUrl+showLend+pagePaName+"="+ pageCount +"><font face='webdings'>:</font></a>");
}
</script>调用方法
<script language="javascript">
ad_cutPage("test.aspx",10,3,5,"page")
</script>
参数说明
ad_cutPage(Pa1,Pa2,Pa3,Pa4,Pa5)
Pa1为页面url
Pa2为总页数
Pa3为当前页
Pa4为分页偏移量
Pa5为页面传递参数名.
真是 热情,我明天看看。其实 我想,【孟子E章】上一页 1 2 3 4 5 下一页
只是算术问题,知道了总记录数,每页记录数,显示范围,计算就好了,就是加减乘除取整运算。因为上面 datagrid/gridview 调用 分页存储过程,只需要从服务器提取一页的记录, 所以下面 我只需要传递一个页码数字。。至于 1 2 3 4 5 的那就是算法了。但是 我觉得这好像是一个笨方法, 各位遇到这样的问题,会怎么解决 ?如果用 JS 的话,是不是 大材小用了。JS 应该是 一次性就把 数据全部取出来了。
按需所取最重要, 不管是js,还是cs,还是js+cs来ajax