收藏:又改好了一个DataList分页

转载 2004年09月10日 17:13:00

和我改的DataGrid分页一样,加了下拉框选择,这次没费多少功夫,有进步,有进步……

源代码如下(请修改数据库链接、表名、字段名):

<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<Script Language="C#" Runat="Server">
int PageSize,RecordCount,PageCount,CurrentPage;
SqlConnection myConnection;
public void Page_Load(Object src,EventArgs e)
 {
   PageSize = 10;
  ConnOpen();
  if(!Page.IsPostBack)
   {
    DataBind();
    CurrentPage = 0;
    ViewState["PageIndex"] = 0;
    //计算总共有多少记录
    RecordCount = CalculateRecord();
    lblRecordCount.Text = RecordCount.ToString();
    //计算总共有多少页
    PageCount = RecordCount/PageSize;
    lblPageCount.Text = PageCount.ToString();
    ViewState["PageCount"] = PageCount;
    DropDown();
   }
 }

private void ConnOpen()
 {
  string strConnection="Data Source=localhost;Initial Catalog=mydata;Persist Security Info=True;User ID=sa;Password=";
  myConnection = new SqlConnection(strConnection);
  myConnection.Open();
 }

private void DataBind()
  {
  int StartIndex;
  //设定导入的起终地址
  StartIndex = CurrentPage*PageSize;
  string strSel = "select * from news order by id desc";
  DataSet ds = new DataSet();
  SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel,myConnection);
  MyAdapter.Fill(ds,StartIndex,PageSize,"news");
  MyDataGrid.DataSource = ds.Tables["news"].DefaultView;
   MyDataGrid.DataBind();
  lbnFirstPage.Enabled = true;
  lbnNextPage.Enabled = true;
  lbnPrevPage.Enabled = true;
  lbnLastPage.Enabled = true;
  if(CurrentPage==(PageCount-1))
   {
    lbnLastPage.Enabled = false;
    lbnNextPage.Enabled = false;
   }
  if(CurrentPage==0)
   {
    lbnFirstPage.Enabled = false;
    lbnPrevPage.Enabled = false;
   }
  lblCurrentPage.Text = (CurrentPage+1).ToString();
  ViewState["PageIndex"]=CurrentPage;
 }
 
public int CalculateRecord()
 {
  int intCount;
  string strCount = "select count(*) as co from news";
  SqlCommand MyComm = new SqlCommand(strCount,myConnection);
  SqlDataReader dr = MyComm.ExecuteReader();
  if(dr.Read())
   {
     intCount = Int32.Parse(dr["co"].ToString());
   }
  else
   {
    intCount = 0;
   }
  dr.Close();
  return intCount;
 }

public void Page_OnClick(Object sender,CommandEventArgs e)
{
 CurrentPage = (int)ViewState["PageIndex"];
 PageCount = (int)ViewState["PageCount"];

 string cmd = e.CommandName;
 //判断cmd,以判定翻页方向
 switch(cmd)
 {
  case "next":
   if(CurrentPage<(PageCount-1)) CurrentPage++;
   break;
  case "prev":
   if(CurrentPage>0) CurrentPage--;
   break;
  case "last":
   CurrentPage=PageCount-1;
   break;
  default:
  CurrentPage = System.Convert.ToInt32(cmd);
   break;
  }
  ViewState["PageIndex"] = CurrentPage;
  myDropDownList.SelectedIndex=CurrentPage;
  DataBind();
 }

private void DropDown()
  {
  for(int u=0;u<PageCount;u++)
   {
    myDropDownList.Items.Add(new ListItem("第"+(u+1).ToString()+"页",Convert.ToString(u)));
   }   
  }

private void listchanged(object sender, System.EventArgs e)
 {
  CurrentPage=myDropDownList.SelectedIndex;
  DataBind();
 }

</script>
<html>
<head>
<title></title>
</head>
<body>
<form runat="server">

<asp:DataList id="MyDataGrid" runat="server"
HeaderStyle-BackColor="#aaaadd"
AlternatingItemStyle-BackColor="Gainsboro"
EditItemStyle-BackColor="yellow"
>
 <ItemTemplate>
  姓名:<%# DataBinder.Eval(Container.DataItem,"title") %>
 </ItemTemplate>
</asp:DataList>
共有<asp:Label id="lblRecordCount" ForeColor="red" runat="server" />条记录&nbsp;
当前为<asp:Label id="lblCurrentPage" ForeColor="red" runat="server" />/<asp:Label id="lblPageCount" ForeColor="red" runat="server" />页&nbsp;
<asp:LinkButton id="lbnFirstPage" Text="首 页" CommandName="0" OnCommand="Page_OnClick" runat="server" />
<asp:LinkButton id="lbnPrevPage" Text="上一页" CommandName="prev" OnCommand="Page_OnClick" runat="server" />
<asp:LinkButton id="lbnNextPage" Text="下一页" CommandName="next" OnCommand="Page_OnClick" runat="server" />
<asp:LinkButton id="lbnLastPage" Text="末 页" CommandName="last" OnCommand="Page_OnClick" runat="server" />
<asp:DropDownList ID="myDropDownList" runat="server" AutoPostBack="true" OnSelectedIndexChanged="listchanged">
</asp:DropDownList>
</form>
</body>
</html>

使用DataList控件绑定数据并实现分页

DataList控件是一种数据绑定控件,下面来介绍一下它与绑定有关的三个属性:     DataKeyField:获取或设置由DataSource属性指定的数据源中的键字段;    DataKeys...
  • SmallXianNotImmortal
  • SmallXianNotImmortal
  • 2016年02月16日 10:03
  • 410

datalist绑定数据,实现增删改查

asp:DataList ID="DataList1" runat="server" CellPadding="4" DataSourceID="ObjectDataSource1" ForeCo...
  • zunguitiancheng
  • zunguitiancheng
  • 2013年10月20日 22:35
  • 761

分页和二级联动

建一个动态Web工程和三张表: 表一:t_employee 字段:e_id,e_name,e_birthday,e_job 以下为二级联动所需的表 表二:t_city 字段:id,cityN...
  • Java1029384756
  • Java1029384756
  • 2016年11月07日 22:32
  • 457

Datalist的分页

@ Page Language="C#" AutoEventWireup="true" CodeFile="datalist.aspx.cs" Inherits="第二章_datalist"  Deb...
  • wfh_fighting
  • wfh_fighting
  • 2016年10月20日 16:00
  • 89

Datalist数据绑定分页

前台代码:                         RepeatDirection="Horizontal"   BackColor="White"             ...
  • dream_302
  • dream_302
  • 2013年09月04日 15:11
  • 457

ASP.NET DataList嵌套实现评论效果

ASP.NET DataList嵌套实现评论效果
  • guwei4037
  • guwei4037
  • 2016年06月19日 21:27
  • 4077

DataList控件分页

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We...
  • Heavy_Dream
  • Heavy_Dream
  • 2016年12月01日 13:27
  • 207

select与datalist在制作下拉菜单时的区别

一般我们通常使用select制作下拉菜单,但是H5之后,datalist也可以充当select的角色,而且两者还有一点小的不同。 对于select来说,select的下拉菜单是供用户选择的,用户只能选...
  • Doulvme
  • Doulvme
  • 2016年12月30日 11:54
  • 2859

DataList绑定照片并分页

善良公社中需要上传图片,然而上一篇是通过自定义图片控件实现的,通过研究了Dalist发现它对于绑定图片十分方便,并且可以分页,这里来分享一下。    在Web页面中的代码:    ...
  • a137151062
  • a137151062
  • 2013年11月27日 22:13
  • 1184

DataList的使用+分页

datalist和repeater一样,都是根据自己的需要添加自己的模板,简单例子如下: 前台代码如下:                ...
  • zhendongzd
  • zhendongzd
  • 2014年09月26日 10:03
  • 281
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:收藏:又改好了一个DataList分页
举报原因:
原因补充:

(最多只允许输入30个字)