为DataList控件实现 记录统计 分页统计 上下页 首末页
不多说了
HTML代码如下:
<asp:DataList ID="DataList1" runat="server" DataKeyField="ZhuCYHM">
<ItemTemplate>
BianH:
<asp:Label ID="BianHLabel" runat="server" Text='<%# Eval("BianH") %>'></asp:Label><br />
ZhuCYHM:
<asp:Label ID="ZhuCYHMLabel" runat="server" Text='<%# Eval("ZhuCYHM") %>'></asp:Label><br />
XingM:
<asp:Label ID="XingMLabel" runat="server" Text='<%# Eval("XingM") %>'></asp:Label><br />
XingB:
<asp:Label ID="XingBLabel" runat="server" Text='<%# Eval("XingB") %>'></asp:Label><br />
<br />
</ItemTemplate>
</asp:DataList><asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:XBMISConnectionString %>"
SelectCommand="SELECT BianH, ZhuCYHM, XingM, XingB FROM T_YongH"></asp:SqlDataSource>
<br />
<table style="width: 619px; height: 75px">
<tr>
<td colspan="3" rowspan="3" style="font-family: 宋体; width: 436px;">
共<asp:label id="lblRecordCount" runat="server">Label</asp:label>条记录 共<asp:label id="lblPageCount" runat="server">Label</asp:label>页 当前第<asp:label id="lblCurrentPage" runat="server">Label</asp:label>页
<asp:LinkButton id="lkFirstPage" runat="server" OnCommand="Page_OnClick" CommandName="first">首页</asp:LinkButton>
<asp:linkbutton id="lkPrevPage" runat="server" OnCommand="Page_OnClick" CommandName="prev">上一页</asp:linkbutton>
<asp:linkbutton id="lkNextPage" runat="server" OnCommand="Page_OnClick" CommandName="next">下一页</asp:linkbutton>
<asp:LinkButton id="lkLastPage" runat="server" OnCommand="Page_OnClick" CommandName="last">尾页</asp:LinkButton>
</td>
</tr>
</table>
后台代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class DataList_exam6 : System.Web.UI.Page
{
int PageSize, RecordCount, PageCount, CurrentPage;
protected void Page_Load(object sender, EventArgs e)
{
//每页中显示的记录数目
PageSize = 3;
if (!Page.IsPostBack)
{
//计算总共有多少记录
RecordCount = CalculateRecord();
//计算总共有多少页 取整
PageCount = RecordCount / PageSize;
if (RecordCount % PageSize > 0)
PageCount = PageCount + 1;
lblPageCount.Text = PageCount.ToString();
lblRecordCount.Text = RecordCount.ToString();
ViewState["PageCount"] = PageCount;
CurrentPage = 0;
ViewState["PageIndex"] = 0;
}
//DataList绑定
DataListBind();
}
//统计记录数目
public int CalculateRecord()
{
//声明一个字符串
string sConnectionString;
//连接数据库字符串,连接到AjaxDB数据库,用户名是sa
sConnectionString = "Data Source=.;Initial Catalog= XBMIS;User ID=sa;";
//创建SqlConnection数据库连接对象
SqlConnection Conn = new SqlConnection(sConnectionString);
//打开Conn
Conn.Open();
int intCount;
SqlCommand comm = new SqlCommand("SELECT count(*) as number FROM T_YongH", Conn);
SqlDataReader dr;
dr = comm.ExecuteReader();
if (dr.Read())
{
intCount = Int32.Parse(dr["number"].ToString());
}
else
{
intCount = 0;
}
dr.Close();
return intCount;
}
public void DataListBind()
{
//声明一个字符串
string sConnectionString;
//连接数据库字符串,连接到XBMIS数据库,用户名是sa
sConnectionString = " Data Source=.;Initial Catalog= XBMIS;User ID=sa; ";
//创建SqlConnection数据库连接对象
SqlConnection Conn = new SqlConnection(sConnectionString);
//打开Conn
Conn.Open();
string sql;
sql = "SELECT BianH, ZhuCYHM, XingM, XingB FROM T_YongH";
//创建并初始化SqlCommand对象,同时执行sql命令
SqlDataAdapter infor = new SqlDataAdapter(sql, Conn);
DataSet ds = new DataSet();
//使用SqlDataAdapter的Fill方法填充DataSet
infor.Fill(ds, "infor");
//GridView1控件的数据绑定
DataList1.DataSource = ds.Tables["infor"];
DataList1.DataBind();
lbnNextPage.Enabled = true;
lbnPrevPage.Enabled = true;
if (PageCount == 0)
{
lblCurrentPage.Text = "0";
lkNextPage.Enabled = false;
lkPrevPage.Enabled = false;
}
else
{
if (CurrentPage == (PageCount - 1)) lkNextPage.Enabled = false;
if (CurrentPage == 0) lkPrevPage.Enabled = false;
lblCurrentPage.Text = (CurrentPage + 1).ToString();
}
}
protected 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 "first":
CurrentPage = 0;
break;
case "last":
CurrentPage = PageCount - 1;
break;
}
ViewState["PageIndex"] = CurrentPage;
DataListBind();
}
}