上一页下一页首页尾页跳转

fisea 2010-11-11 11:56:17
四个分页按钮、一个跳转文本框、和一个跳转按钮。手写代码怎么实现?
郁闷有现成的分页控件不能用。美工就是这样设计的。
...全文
3998 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
wucong60 2010-11-13
  • 打赏
  • 举报
回复
获得第a行到第b行的数据:select * from (select *,row_number()over(order by sid) as rownumber from tablename)as tableA where rownumber between a and b
private void BindData(string tablename ,string strSort,int Pagesize, int CurrentPageIndex)
{
....
}
csdnflys 2010-11-13
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 ds252743641 的回复:]
HTML code
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml……
[/Quote]
支持~~
ds252743641 2010-11-13
  • 打赏
  • 举报
回复
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<asp:DataList ID="DataList1" runat="server">
<ItemTemplate>
<table cellpadding="0" cellspacing="0" style="width: 400px;">
<tr>
<td>
<asp:Label ID="Label1" runat="server" Font-Size="9pt" Text='<%# Eval("CustomerID") %>'
ForeColor="Black"></asp:Label>
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
<br />
<table cellpadding="0" cellspacing="0">
<tr>
<td style="width: 100px">
<asp:Label ID="Label5" runat="server" Font-Size="9pt" Text="当前页为 [ "></asp:Label>
<asp:Label ID="Label7" runat="server" Text="1" Font-Size="9pt"></asp:Label>
<asp:Label ID="Label3" runat="server" Font-Size="9pt" Text=" ]"></asp:Label>
</td>
<td style="width: 40px">
<asp:LinkButton ID="LinkButton2" runat="server" Font-Size="9pt" Font-Underline="False"
ForeColor="Red" OnClick="LinkButton2_Click">首页</asp:LinkButton>
</td>
<td style="width: 30px">
<asp:LinkButton ID="LinkButton3" runat="server" Font-Size="9pt" Font-Underline="False"
ForeColor="Red" OnClick="LinkButton3_Click" >上一页</asp:LinkButton>
</td>
<td style="width: 48px">
<asp:LinkButton ID="LinkButton4" runat="server" Font-Size="9pt" Font-Underline="False"
ForeColor="Red" OnClick="LinkButton4_Click" >下一页</asp:LinkButton>
</td>
<td style="width: 49px">
<asp:LinkButton ID="LinkButton5" runat="server" Font-Size="9pt" Font-Underline="False"
ForeColor="Red" OnClick="LinkButton5_Click" >尾页</asp:LinkButton>
</td>
<td align="center" style="width: 118px">
<asp:Label ID="Label10" runat="server" Text="总页为 [ " Font-Size="9pt" Width="52px"></asp:Label>
<asp:Label ID="Label2" runat="server" Font-Size="9pt"></asp:Label>
<asp:Label ID="Label4" runat="server" Font-Size="9pt" Text=" ]"></asp:Label>
</td>
</tr>
</table>
</form>
</body>
</html>

public partial class _Default : System.Web.UI.Page 
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
dlBind();
}

}
public void dlBind()
{
int curpage = Convert.ToInt32(this.Label7.Text);
PagedDataSource ps = new PagedDataSource();
DataSet ds = bind(); //这里是数据源

ps.DataSource = ds.Tables[0].DefaultView;
ps.AllowPaging = true; //是否可以分页
ps.PageSize = 10; //显示的数量,也就是每页要显示多少条记录
ps.CurrentPageIndex = curpage - 1; //取得当前页的页码
this.LinkButton3.Enabled = true;
this.LinkButton4.Enabled = true;
this.LinkButton5.Enabled = true;
this.LinkButton2.Enabled = true;
if (curpage == 1)
{
this.LinkButton2.Enabled = false;//不显示第一页按钮
this.LinkButton3.Enabled = false;//不显示上一页按钮
}
if (curpage == ps.PageCount)
{
this.LinkButton4.Enabled = false;//不显示下一页
this.LinkButton5.Enabled = false;//不显示最后一页
}
this.Label2.Text = Convert.ToString(ps.PageCount);
this.DataList1.DataSource = ps;
this.DataList1.DataKeyField = "CustomerID";
this.DataList1.DataBind();
}

private DataSet bind()
{
string connectString = "Server=(local);Integrated Security=True;Database=Northwind";

using (SqlConnection con = new SqlConnection(connectString))
{
con.Open();
SqlCommand command = con.CreateCommand();
command.CommandText = "select * from Customers";
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(command);
da.Fill(ds);

return ds;
}
}

protected void LinkButton2_Click(object sender, EventArgs e) //第一页
{
this.Label7.Text = "1"; //Label7.Text为当前页
this.dlBind();
}
protected void LinkButton3_Click(object sender, EventArgs e) //上一页
{
this.Label7.Text = Convert.ToString(Convert.ToInt32(this.Label7.Text) - 1);
this.dlBind();
}
protected void LinkButton4_Click(object sender, EventArgs e) //下一页
{
this.Label7.Text = Convert.ToString(Convert.ToInt32(this.Label7.Text) + 1);
this.dlBind();
}
protected void LinkButton5_Click(object sender, EventArgs e) //最后一页
{
this.Label7.Text = this.Label2.Text; //Label2.Text为总页数
this.dlBind();
}

}
begintransaction 2010-11-12
  • 打赏
  • 举报
回复
分页可以用PageDataSource或存诸过程分页,上面是存诸过程
分页主要是有记录好页面索引可以用ViewState来存诸索引值,防止页面更新数据丢失.
七爷 2010-11-12
  • 打赏
  • 举报
回复
非要你那样的话就用1楼的方法也行,只要你不嫌烦
ycproc 2010-11-12
  • 打赏
  • 举报
回复
数据总count数

分页显示数 page

……
jsm8610 2010-11-12
  • 打赏
  • 举报
回复
你到是把LinkEnalbe这个方法给我看下咯!
  • 打赏
  • 举报
回复
SQL 分页就能实现
li309000011 2010-11-12
  • 打赏
  • 举报
回复
PageDataSource就可以了
要么自己写SQL 手动分页
zhuxueliao 2010-11-12
  • 打赏
  • 举报
回复
//在页面最上面引用
<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>
//在页面需要的地方写这段代码.
<webdiyer:AspNetPager ID="AspNetPager1"
Width="100%" runat="server" CustomInfoHTML="第%CurrentPageIndex%页,共%PageCount%页,每页%PageSize%条"
FirstPageText="首页" LastPageText="尾页" NextPageText="下一页" PrevPageText="上一页" ShowCustomInfoSection="Left"
ShowPageIndexBox="Always" SubmitButtonText="Go" TextAfterPageIndexBox="页" TextBeforePageIndexBox="转到"
AlwaysShow="True" LayoutType="Table"
onpagechanging="AspNetPager1_PageChanging">
</webdiyer:AspNetPager>
为什么不用控件。这样简单啊
procedure123 2010-11-12
  • 打赏
  • 举报
回复
sql server有个row_num可以用来分页
webdiyer 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 fisea 的回复:]
四个分页按钮、一个跳转文本框、和一个跳转按钮。手写代码怎么实现?
郁闷有现成的分页控件不能用。美工就是这样设计的。
[/Quote]
用AspNetPager设置相应的属性就可以实现你的要求,不知道你说的“有现成的分页控件不能用”是什么意思?
qq346127416 2010-11-12
  • 打赏
  • 举报
回复
PageDataSouce这个类就可以 跟控件差不多
yzf86211861 2010-11-12
  • 打赏
  • 举报
回复
主要靠 sql 的 row_number 函数来实现分页 如果是手写 分页的话
Fry_cici 2010-11-12
  • 打赏
  • 举报
回复
     protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindCustomer();
}

PagerControl1.PageChangeEvent += new Web.Controls.PagerControl.PageChangeDeleagete(PagerControl1_PageChangeEvent);
}

void PagerControl1_PageChangeEvent(int pageIndex)
{
BindCustomer();
}
public void BindCustomer()
{
rpt_Customer.DataSource = bll.GetListByDataTable("*", getCondtion(), "CID", PagerControl1.PageIndex, pageSize, "0", out pageCount);
rpt_Customer.DataBind();
PagerControl1.setDataTable(pageCount, pageSize);
}

大概是这样的 觉得可以的话 可以用下
Fry_cici 2010-11-12
  • 打赏
  • 举报
回复
功能跟你的一样


<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="right">
当前页数:<asp:Label ID="lblCurrentPage" runat="server" Text="Label"></asp:Label>
     总页数:<asp:Label ID="lblTotalPage" runat="server" Text="Label"></asp:Label>
    每页条数:<asp:Label ID="lblPageSize" runat="server" Text="Label"></asp:Label>
    总记录条数:<asp:Label ID="lblTotal" runat="server" Text="Label"></asp:Label>
     
<asp:LinkButton ID="lbIndex" runat="server" OnClick="lbIndex_Click">首页</asp:LinkButton>
  
<asp:LinkButton ID="lbBack" runat="server" OnClick="lbBack_Click">上一页</asp:LinkButton>
  
<asp:LinkButton ID="lbNext" runat="server" OnClick="lbNext_Click">下一页</asp:LinkButton>
  
<asp:LinkButton ID="lbLast" runat="server" OnClick="lbLast_Click">尾页</asp:LinkButton>
  
<asp:TextBox ID="txtPageNum" runat="server" Width="28px" onkeyup="value=value.replace(/[^0-9]/g,'')"
onblur="value=value.replace(/[^0-9]/g,'')"></asp:TextBox>
<asp:Button ID="btnT" runat="server" Text="跳转" OnClick="btnT_Click" Style="height: 26px" class="coolbg np" />
</td>
</tr>
</table>
Fry_cici 2010-11-12
  • 打赏
  • 举报
回复
public partial class PagerControl : System.Web.UI.UserControl
{
public delegate void PageChangeDeleagete(int pageIndex); //定义委托
public event PageChangeDeleagete PageChangeEvent; //定义事件

protected void Page_Load(object sender, EventArgs e)
{
}

/// <summary>
/// 设置当前页码
/// </summary>
public int PageIndex
{
get
{
return ViewState["pageIndex"] == null ? 1 : Convert.ToInt32(ViewState["pageIndex"]);
}
set
{
ViewState["pageIndex"] = value;

}
}

/// <summary>
/// 设置数据源,及控件状态初始化
/// </summary>
/// <param name="pageSize">每页条数</param>
/// <param name="pageTotal">总条数</param>
/// <param name="refDt">数据源</param>
public void setDataTable(int pageTotal, int pageSize)
{
int currentPage = GetPageCount(pageTotal, pageSize);
if (PageIndex == 1)
{
lbIndex.Enabled = false;
lbBack.Enabled = false;
}
else
{
lbIndex.Enabled = true;
lbBack.Enabled = true;
}
if (PageIndex == currentPage)
{
lbNext.Enabled = false;
lbLast.Enabled = false;
}
else
{
lbNext.Enabled = true;
lbLast.Enabled = true;
}
lblTotalPage.Text = currentPage + "";
lblCurrentPage.Text = PageIndex + "";
lblPageSize.Text = pageSize + "";
lblTotal.Text = pageTotal + "";
}


/// <summary>
/// 获得总页码
/// </summary>
/// <param name="pageTotalCount">总记录数</param>
/// <param name="pageSize">当前记录</param>
/// <returns>总页码</returns>
private int GetPageCount(int pageTotalCount, int pageSize)
{
int num = 1;
if (pageTotalCount % pageSize == 0)
{
num = pageTotalCount / pageSize;
}
else
{
num = pageTotalCount / pageSize + 1;
}
return num;
}

/// <summary>
/// 首页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lbIndex_Click(object sender, EventArgs e)
{
PageIndex = 1;
PageChangeEvent(PageIndex);
}
/// <summary>
/// 上一页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lbBack_Click(object sender, EventArgs e)
{
PageIndex--;
PageChangeEvent(PageIndex);
}
/// <summary>
/// 下一页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lbNext_Click(object sender, EventArgs e)
{
PageIndex++;
PageChangeEvent(PageIndex);
}
/// <summary>
/// 最后一页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lbLast_Click(object sender, EventArgs e)
{
PageIndex = Convert.ToInt32(this.lblTotalPage.Text);
PageChangeEvent(PageIndex);
}

/// <summary>
/// 跳到目的页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnT_Click(object sender, EventArgs e)
{
if (txtPageNum.Text.Trim() != "")
{

int num = Convert.ToInt32(txtPageNum.Text);

if (num <= Convert.ToInt32(this.lblTotalPage.Text) && num > 0)
{
PageIndex = num;
txtPageNum.Text = "";
PageChangeEvent(PageIndex);
}
}
}
}
andrewsway 2010-11-12
  • 打赏
  • 举报
回复
我声援一下“aspnetpager”吧,很热心的一哥。

另外,楼主,这个东西可以自己写的,你就费上一次事,然后自己写一个就行了,今后就很随意了,想怎样就怎样,其实就是一传带链接的字符串,你考虑下
begintransaction 2010-11-11
  • 打赏
  • 举报
回复
 /// <summary>
/// 记录当前页
/// </summary>
public int pageIndex
{
get { return Convert.ToInt32(ViewState["P_Index"]); }
set
{
ViewState["P_Index"] = value;
}
}
/// <summary>
/// 记录总页数
/// </summary>
public int PageSum
{
get { return Convert.ToInt32(ViewState["P_Sum"]); }
set
{
ViewState["P_Sum"] = value;
}
}
public const int pageSize = 10;//每页
#endregion

/// <summary>
/// 显示行数
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
AllowPage(this.ddlIndex, bll.GetEvaluateSum(), pageSize, this.lblMessage);
pageIndex = 0;
this.gvEvaluates.DataSource = bll.GetEvaluateTops(pageIndex);
this.gvEvaluates.DataBind();
LinkEnalbe(pageIndex, this.lbPrevious, this.lbNext, this.lbFirst, this.lbLastly, PageSum);
this.lblIndex.Text = (pageIndex + 1).ToString();
this.lblIndex.Text = (pageIndex + 1).ToString();//当前索引页
}

}
/// <summary>
/// 分页
/// </summary>
/// <param name="ddl">下拉框控件</param>
/// <param name="sum">数据总数</param>
/// <param name="pageSize">每页显示行数</param>
/// <param name="lbl">显示Lable</param>
private void AllowPage(DropDownList ddl, int sum, int pageSize, Label lbl)
{
PageSum = sum / pageSize;//获得有多少页
if (sum % pageSize > 0)
{
PageSum += 1;
}
ddl.Items.Clear();
for (int i = 1, len = PageSum; i <= len; i++)
{
ddl.Items.Add(i.ToString());
}
if (PageSum == 0)
{
ddl.Items.Add("无数据");
}
lbl.Text = "共" + (PageSum) + "页";
}
//转向指定分页
protected void btnGo_Click(object sender, EventArgs e)
{
int index = Convert.ToInt32(this.ddlIndex.SelectedValue);
index = index == 1 ? 0 : Convert.ToInt32(this.ddlIndex.Items[this.ddlIndex.SelectedIndex - 1].Value) * pageSize;
pageIndex = index / pageSize;
this.gvEvaluates.DataSource = bll.GetEvaluateTops(index);
this.gvEvaluates.DataBind();
LinkEnalbe(pageIndex, this.lbPrevious, this.lbNext, this.lbFirst, this.lbLastly, PageSum);
this.lblIndex.Text = (pageIndex + 1).ToString();//当前索引页
}
//下一页
protected void lbNext_Click(object sender, EventArgs e)
{
pageIndex++;
this.gvEvaluates.DataSource = bll.GetEvaluateTops(pageIndex * pageSize);
this.gvEvaluates.DataBind();
LinkEnalbe(pageIndex, this.lbPrevious, this.lbNext, this.lbFirst, this.lbLastly, PageSum);
this.lblIndex.Text = (pageIndex + 1).ToString();//当前索引页
}
//上一页
protected void lbPrevious_Click(object sender, EventArgs e)
{
pageIndex--;
this.gvEvaluates.DataSource = bll.GetEvaluateTops(pageIndex * pageSize);
this.gvEvaluates.DataBind();
LinkEnalbe(pageIndex, this.lbPrevious, this.lbNext, this.lbFirst, this.lbLastly, PageSum);
this.lblIndex.Text = (pageIndex + 1).ToString();//当前索引页
}
//首页
protected void lbFirst_Click(object sender, EventArgs e)
{
pageIndex = 0;
this.gvEvaluates.DataSource = bll.GetEvaluateTops(pageIndex);
this.gvEvaluates.DataBind();
LinkEnalbe(pageIndex, this.lbPrevious, this.lbNext, this.lbFirst, this.lbLastly, PageSum);
this.lblIndex.Text = (pageIndex + 1).ToString();//当前索引页
}
//尾页
protected void lbLastly_Click(object sender, EventArgs e)
{
pageIndex = (PageSum - 1);
this.gvEvaluates.DataSource = bll.GetEvaluateTops(pageIndex * pageSize);
this.gvEvaluates.DataBind();
LinkEnalbe(pageIndex, this.lbPrevious, this.lbNext, this.lbFirst, this.lbLastly, PageSum);
this.lblIndex.Text = (pageIndex + 1).ToString();//当前索引页
}

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧