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)

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

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

{

if (!Page.IsPostBack)

{

// 每页显示12条记录

int PageSize=12;

// 当前显示页

int CurrentPage=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)

{

throw new Exception(ex.Message);

}

}

 

 

 

 

 

 

 

Asp.net DataList 分页技术 (3)

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

public string show ( object orderID)

{

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

}

// 将数据绑定到Datalist控件

public void 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)

{

throw new 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();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值