當前位置:編程學習大全網 - 源碼下載 - .net 分頁 要求效果是 上壹頁1 2 3 4 5 6 下壹頁

.net 分頁 要求效果是 上壹頁1 2 3 4 5 6 下壹頁

DataList是不具備自動分頁的功能的......

DataList與DataGrid都是很好用的控件,但是非常遺憾的是DataList不具有象DataGrid那樣的自動分頁功能,即:他不具備PageSize這樣的屬性來控制分頁,而DataGrid卻不具備DataList的RepeatDirection和 RepeatColumns屬性。本人根據DataGrid的分頁思想自己寫了個DataList的分頁程序,如有什麽不足的地方歡迎指正.

a.aspx頁:

<TABLE cellSpacing=0 cellPadding=0 width=784 height="120" align=center border=0>

<tr>

<td align=center>

<asp:datalist id="MyDataGrid" RepeatDirection=Horizontal RepeatColumns=5 showfooter=true borderwidth=0 runat=server>

<HeaderTemplate>

<table width=784 cellpadding=0 cellspacing=0 border=0 >

<tr>

</HeaderTemplate>

<ItemTemplate>

<td align=center>

<table width="100%" height="120">

<tr>

<td width=154 align="center">

<img width=130 height=90 src='<%# DataBinder.Eval(Container.DataItem, "P_ID", "Img.aspx?id={0}")%>'>

</td>

</tr>

<tr>

<td align=center>

名稱: <%# DataBinder.Eval(Container.DataItem, "P_Name")%>

</td>

</tr>

</table>

</td>

</ItemTemplate>

<FooterTemplate>

</tr>

</table>

</FooterTemplate>

</asp:datalist>

</td>

</tr>

</table>

<table id=ttt width=784 align=center>

<tr align="center" valign="middle" width=100%>

<td align="center" valign="middle"><asp:LinkButton ID="btnFrist" runat="server" CommandName="Pager" CommandArgument="Frist" OnCommand="PagerButtonClick" Text="首頁"></asp:LinkButton></td>

<td align="center" valign="middle"><asp:LinkButton ID="btnPrev" runat="server" CommandName="Pager" CommandArgument="Prev" OnCommand="PagerButtonClick" Text="上壹頁"></asp:LinkButton></td>

<td align="center" valign="middle"><asp:LinkButton ID="btnNext" runat="server" CommandName="Pager" CommandArgument="Next" OnCommand="PagerButtonClick" Text="下壹頁"></asp:LinkButton></td>

<td align="center" valign="middle"><asp:LinkButton ID="btnLast" runat="server" CommandName="Pager" CommandArgument="Last" OnCommand="PagerButtonClick" Text="尾頁"></asp:LinkButton></td>

<td align="right"valign="middle">頁<asp:Label ID="lblCurrentPage" runat="server" /></td><td align="left" valign="middle">/<asp:Label ID="lalPageCount" runat="server"/></td>

<td align="center" valign="middle">***<asp:Label ID="lblRecordCount" runat="server" />條記錄</td>

<td align="center" valign="middle">轉到第<asp:DropDownList ID="D1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="D1_SelectedIndexChanged" />頁</td>

</tr>

</td>

</tr>

</table>

a.aspx.cs頁:

private static int PageIndex;//保存當前頁的索引

private static int pagesize;//保存每個頁面中的記錄數目

private static int CurrentPage;//為當前頁序號-1

private static int PageCount;//保存總頁數

private static int RecordCount;//總記錄數

public bool DropFill;

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

DropFill = true;

pagesize = 10;//pagesize = MyDataGrid.RepeatColumns;可以設DataList的屬性RepeatDirection="Horizontal" RepeatColumns="10",通過RepeatColumns來設置每頁顯示的條數

CurrentPage = 0;

GetPageCount();//得到總記錄數

Databind();

}

}

public void GetPageCount()

{

string sql = "select * from prizes ";

Conn c1 = new Conn();

SqlCommand cmd = new SqlCommand(sql, c1.SqlConnection());

SqlDataAdapter da = new SqlDataAdapter(cmd);

DataSet ds = new DataSet();

da.Fill(ds, "table");

RecordCount = ds.Tables["table"].DefaultView.Count;

c1.SqlConnection().Close();

}

public void Databind()

{ D1.Items.Clear();

string sql = "select * from prizes";

Class1 c1 = new Class1();

SqlCommand cmd = new SqlCommand(sql, c1.SqlConnection());

SqlDataAdapter da = new SqlDataAdapter(cmd);

DataSet ds = new DataSet();

PageIndex = CurrentPage * pagesize;

da.Fill(ds,PageIndex,pagesize, "table");

MyDataGrid.DataSource = ds.Tables["table"];

MyDataGrid.DataBind();

c1.CloseSqlConnection();

PageCount = RecordCount / pagesize;

if (RecordCount % pagesize != 0)

PageCount++;

lalPageCount.Text = PageCount.ToString();

lblRecordCount.Text = RecordCount.ToString();

if (lblCurrentPage.Text == "")

{

lblCurrentPage.Text = "1";

}

if (CurrentPage == 0)

{

btnFrist.Enabled = false;

btnPrev.Enabled = false;

}

if (CurrentPage == PageCount - 1)

{

btnLast.Enabled = false;

btnNext.Enabled = false;

}

//給下拉鏈表中添加頁數

if (DropFill == true)

{

for (int i = 1; i <= PageCount; i++)

{

D1.Items.Add(new ListItem(i.ToString()));

}

}

else

{

D1.Items.Add("1");

}

}

protected void D1_SelectedIndexChanged(object sender, EventArgs e)

{

btnFrist.Enabled = true;

btnLast.Enabled = true;

btnNext.Enabled = true;

btnPrev.Enabled = true;

DropFill = false;

CurrentPage = Int32.Parse(D1.SelectedValue.ToString())-1;

//MyDataGrid.CurrentPageIndex = Pageindex - 1;

DropFill = false;

Databind();

lblCurrentPage.Text = (CurrentPage+1).ToString();

}

protected void PagerButtonClick(object sender, CommandEventArgs e)

{

btnFrist.Enabled = true;

btnLast.Enabled = true;

btnNext.Enabled = true;

btnPrev.Enabled = true;

DropFill = false;

string age = e.CommandArgument.ToString();

switch (age)

{

case "Next":

if (CurrentPage < PageCount - 1)

{

CurrentPage++;

}

break;

case "Prev":

if (CurrentPage > 0)

{

CurrentPage--;

}

break;

case "Frist":

{

CurrentPage = 0;

}

break;

case "Last":

{

CurrentPage = PageCount - 1;

}

break;

}

//MyDataGrid.CurrentPageIndex = PageIndex;

Databind();

lblCurrentPage.Text = Convert.ToString(CurrentPage+1);

}

  • 上一篇:A*算法優化
  • 下一篇:簡單介紹四方聚合支付系統
  • copyright 2024編程學習大全網