datalist分页(第二种)(转贴)

Asp.net:DataList分页技术(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 id="Table1" cellSpacing="0"  width="752" border="0">

<TR>

<TD>

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

</TD>

</TR>

<TR>

<TD>

<asp:datalist id="DataList1" runat="server" Width="100%" Height="96px"> <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 id="FirstLB" runat="server" OnCommand="LinkButton_Click" CommandName="first">第一页</asp:linkbutton>

<asp:linkbutton id="PreviousLB" runat="server" OnCommand="LinkButton_Click" CommandName="prev">上一页</asp:linkbutton>

<asp:linkbutton id="NextLB" runat="server" OnCommand=LinkButton_Click CommandName="next">下一页</asp:linkbutton>

<asp:linkbutton id="EndLB" runat="server" OnCommand=LinkButton_Click CommandName="end">最后一页</asp:linkbutton>

总页<asp:label id="TotalLbl" runat="server"></asp:label>

当前第<asp:label id="CurrentLbl" runat="server"></asp:label>页 <asp:linkbutton id="JumpLB" runat="server" OnCommand=LinkButton_Click CommandName="jump">跳到</asp:linkbutton>

第<asp:textbox id="TextBox1" runat="server" Width="90px"></asp:textbox> 页

</TD>

</TR>

</TABLE>


Asp.net:DataList分页技术(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.net:DataList分页技术(3)

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

publicstring show (object orderID)

{

return "<a href=WebForm2.aspx?id="+orderID+" target='_blank'>"+orderID+" </a>";

}

//将数据绑定到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.net:DataList分页技术(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();

}

 

转载于:https://www.cnblogs.com/gerdy/archive/2007/09/28/909885.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值