• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Asp.net:DataList分页技术

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

转:http://blog.sina.com.cn/s/blog_4a87caab010006kr.html




 

Asp.netDataList分页技术(1)

·                                 技术点一:

DataList分页主要用到了da.Fill方法的第一个重载方法。它的参数分别是数据集DataSet ,开始记录数StartRecord,最大的记录数MaxRecord,数据表名TableName 。如下:

da.Fill(System.Data.DataSet ds ,int startRecord,int maxRecords,string srcTable)

技术点二:

要使绑定列的一列成为一个超级链接列。

HTML端代码:

<%#show(DataBinder.Eval(Container.DataItem,OrderID))%>

后台代码一个show()的方法:

public string show (object orderID)

{

return "<a href=WebForm2.aspx?id="+

orderID+" target='_blank'>"+orderID+" </a>";

}

第一个页面的前台代码如下:

<TABLE >

<TR>

<TD>

<FONT face="宋体">DataList分页技术和超级链接</FONT>

</TD>

</TR>

<TR>

<TD>

<asp:datalist > <HeaderTemplate>

定单编号<td>

员工编号<td>

定单日期<td> 

运费<td> 

运往所在城市

</HeaderTemplate>

<ItemTemplate>

<%# show(DataBinder.Eval(Container.DataItem,"OrderID"))%>

<td>

<%# DataBinder.Eval(Container.DataItem,"CustomerID")%> 

<td>

<%# DataBinder.Eval(Container.DataItem,"OrderDate")%>

<td>

<%# DataBinder.Eval(Container.DataItem,"Freight")%>

<td>

<%# DataBinder.Eval(Container.DataItem,"ShipCity")%>

</ItemTemplate>

</asp:datalist></TD>

</TR>

<TR>

<TD>

<asp:linkbutton ></asp:linkbutton> 

<asp:linkbutton ></asp:linkbutton> 

<asp:linkbutton ></asp:linkbutton> 

<asp:linkbutton ></asp:linkbutton> 

总页<asp:label ></asp:label> 

当前第<asp:label ></asp:linkbutton>

<asp:textbox >页

</TD>

</TR>

</TABLE>

Asp.netDataList分页技术(2)

·                                 第一个页面的后台代码如下:

privatevoid Page_Load(object sender, System.EventArgs e)

{

if(!Page.IsPostBack)

{

//每页显示12条记录

int PageSize=12;

//当前显示页

intCurrentPage=0;

//索引

ViewState["PageIndex"]=0;

//计算共有多少记录

int rdCount=CalculateRecord();

//计算共有多少页

int PageCount=RecordCount/PageSize;

ViewState["PageCount"]=PageCount;

//显示总页数

this.TotalLbl.Text=PageCount.ToString();

this.DataListBind();

}

}

?/P>

//计算总共有多少条记录

private int CalculateRecord()

{

try

{

int recordCount;

SqlConnection con =new SqlConnection("server=.;database=Northwind;uid=sa;pwd=sa");

con.Open();

string sql="select count(*)as count from Orders";

SqlCommand cmd = new SqlCommand(sql,con);

SqlDataReader sdr = cmd.ExecuteReader();

if(sdr.Read())

{

recordCount=Int32.Parse(sdr["count"].ToString());

}

else

{

recordCount = 0;

}

sdr.Close();

con.Close();

return recordCount;

}

catch(Exception ex)

{

thrownew Exception(ex.Message);

}

}

 

 

 

 

 

 

 

Asp.netDataList分页技术(3)

·                                 //以第一列定单编号做个超级链接,链接到第二页显示详细信息

publicstring show (object orderID)

{

return "<a href=WebForm2.aspx?;

}

//将数据绑定到Datalist控件

publicvoid DataListBind()

{

try

{

//设定导入的起终地址

int StartIndex = CurrentPage*PageSize;

string sql = "select * from Orders";

DataSet ds = new DataSet();

SqlConnection con=new SqlConnection("server=.;database=Northwind;uid=sa;pwd=");

con.Open();

SqlDataAdapter sda= new SqlDataAdapter(sql,con);

sda.Fill(ds,StartIndex,PageSize,"orders");

this.DataList1.DataSource =

ds.Tables["orders"].DefaultView;

this.DataList1.DataBind();

this.PreviousLB.Enabled = true;

this.NextLB.Enabled = true;

if(CurrentPage==(PageCount-1))

{

//当为最后一页时,下一页链接按钮不可用

this.NextLB.Enabled = false;

}

if(CurrentPage==0)

{

//当为第一页时,上一页按钮不可用

this.PreviousLB.Enabled = false;

}

//当前页数

this.CurrentLbl.Text = (CurrentPage+1).ToString();

}

catch(Exception ex)

{

thrownew Exception(ex.Message);

}

}

Asp.netDataList分页技术(4)

·                                 //自己编写的按钮点击事件

public void LinkButton_Click

(Object sender,CommandEventArgs e)

{

//获得当前页索引

int CurrentPage = (int)ViewState["PageIndex"];

//获得总页数

int PageCount = (int)ViewState["PageCount"];

string cmd = e.CommandName;

switch(cmd)

{

case "prev"://上一页

   if(CurrentPage>0)

      CurrentPage--;

      break;

case "next"://下一页

   if(CurrentPage<(PageCount-1))

      CurrentPage++;

      break;

case "first"://第一页

   CurrentPage=0;

   break;

case "end"://最后一页

   CurrentPage=PageCount-1;

   break;

case "jump"://跳转

if(this.TextBox1.Text.Trim()==""||Int64.Parse(this.TextBox1.Text.Trim())>PageCount)

{

//如果输入数字为空或超出范围则返回

return;

}

else

{

CurrentPage=Int32.Parse(this.TextBox1.Text.ToString())-1;

break;

}

}

//获得当前页

ViewState["PageIndex"] = CurrentPage;

//重新将DataList绑定到数据库

this.DataListBind();

}


第二页用来显示详细信息,用的控件是DataGird。代码如下:

private void Page_Load(object sender, System.EventArgs e)

{

string id=Request.QueryString["id"];

SqlConnection con=new SqlConnection("server=.;database=Northwind;uid=sa;pwd=");

con.Open();

SqlDataAdapter sda=new SqlDataAdapter();

sda.SelectCommand=new SqlCommand("select * from [Order Details] where OrderID='"+id+"'",con);

DataSet ds=new DataSet();

sda.Fill(ds,"orders");

this.DataGrid1.DataSource=ds.Tables["orders"].DefaultView; this.DataGrid1.DataBind();

con.Close();

}


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
简单实现gSOAP和ASP.NET的通信发布时间:2022-07-10
下一篇:
asp.netcore源码飘香:Options组件发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap