您的位置:首页 > 编程语言

Eric的数据分页(演示+代码)

2004-09-09 14:43 609 查看
演示地址: Click Me!  分页方法很简单,也很有效率.

代码:


int pages = 5;


int pageSize = 7;


OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + HttpContext.Current.Server.MapPath("Northwind.mdb"));




void Page_Load(object sender, EventArgs e)






{


if (!IsPostBack)






{


dgBind(getSqlString(1));


}




int firstPage = int.Parse(hidFirstPage.Value);


pnlButtons.Controls.Add(getPager(firstPage));


}




string getSqlString(int selectedPage)






{


string[] idsStrArray;


string sqlStr;




if (Session["idStr"] != null)






{


idsStrArray = Session["idStr"].ToString().Split('#');


}


else






{


sqlStr = "SELECT [产品ID] FROM [产品] ORDER BY [供应商ID]";


OleDbDataAdapter da = new OleDbDataAdapter(sqlStr, conn);


DataTable dt = new DataTable();


conn.Open();


da.Fill(dt);


conn.Close();


da.Dispose();


StringBuilder sb = new StringBuilder("");




for (int i = 0; i < dt.Rows.Count; i++)






{


if ((i + 1) % pageSize == 0)






{


sb.Append(dt.Rows[i][0].ToString() + "#");


}


else






{


sb.Append(dt.Rows[i][0].ToString() + ",");


}


}




sb.Remove(sb.Length - 1, 1);


idsStrArray = sb.ToString().Split('#');


Session["idStr"] = sb.ToString();


}




hidPageCount.Value = idsStrArray.Length.ToString();


sqlStr = "SELECT [产品].[产品ID], [产品].[产品名称], [供应商].[公司名称], [类别].[类别名称] FROM ";


sqlStr += "(([供应商] INNER JOIN [产品] ON [供应商].[供应商ID] = [产品].[供应商ID]) INNER JOIN [类别] ON ";


sqlStr += "[类别].[类别ID] = [产品].[类别ID]) WHERE [产品ID] IN (" + idsStrArray[selectedPage - 1] + ") ";


sqlStr += "ORDER BY [产品].[供应商ID]";


return sqlStr;


}




Panel getPager(int firstPage)






{


int pageCount = int.Parse(hidPageCount.Value);


Panel pnlPager = new Panel();


pnlPager.Controls.Add(new LiteralControl("<BR> 共" + pageCount.ToString() + "页 "));


pnlPager.Controls.Add(getLinkButton("Fst", "首页", "pgBtn", "1"));


pnlPager.Controls.Add(new LiteralControl(" "));




if (firstPage > 0)






{


pnlPager.Controls.Add(getLinkButton("Pre", "前" + pages.ToString() + "页", "pgBtn", (firstPage - pages + 1).ToString()));


pnlPager.Controls.Add(new LiteralControl(" "));


}




for (int i = firstPage + 1; i < firstPage + pages + 1; i++)






{


if (i > pageCount)






{


break;


}




pnlPager.Controls.Add(getLinkButton(i.ToString(), "[" + i.ToString() + "]", "pgBtn", i.ToString()));


pnlPager.Controls.Add(new LiteralControl(" "));


}




if (firstPage + pages < pageCount)






{


pnlPager.Controls.Add(getLinkButton("Nxt", "后" + pages.ToString() + "页", "pgBtn", (firstPage + pages + 1).ToString()));


pnlPager.Controls.Add(new LiteralControl(" "));


}




pnlPager.Controls.Add(getLinkButton("Lst", "末页", "pgBtn", pageCount.ToString()));


return pnlPager;


}




LinkButton getLinkButton(string lbId, string lbText, string lbCmdName, string lbCmdArg)






{


LinkButton lb = new LinkButton();


lb.ID = lbCmdName + lbId;


lb.Text = lbText;


lb.CommandName = lbCmdName;


lb.CommandArgument = lbCmdArg;


lb.Command += new CommandEventHandler(pageTurn);


return lb;


}




void pageTurn(object sender, CommandEventArgs e)






{


LinkButton lb = (LinkButton)sender;


int selectedPage = int.Parse(lb.CommandArgument);


int firstPage = selectedPage / pages * pages;


firstPage = (selectedPage % pages == 0) ? (firstPage - pages) : firstPage;


hidFirstPage.Value = firstPage.ToString();


dgBind(getSqlString(selectedPage));


pnlButtons.Controls.RemoveAt(pnlButtons.Controls.Count - 1);


pnlButtons.Controls.Add(getPager(firstPage));


lb = (LinkButton)pnlButtons.Controls[pnlButtons.Controls.Count - 1].FindControl("pgBtn" + selectedPage.ToString());


lb.Enabled = false;


}




void dgBind(string sqlStr)






{


OleDbDataAdapter da = new OleDbDataAdapter(sqlStr, conn);


DataTable dt = new DataTable();


conn.Open();


da.Fill(dt);


conn.Close();


da.Dispose();


dg.DataSource = dt;


dg.DataBind();


}




void dg_ItemDataBound(object sender, DataGridItemEventArgs e)






{


dg.Controls[0].EnableViewState = false;


}




<%

@ Import Namespace="System.Text" %>




<%

@ Import Namespace="System.Data.OleDb" %>




<%

@ Import Namespace="System.Data" %>




<%

@ Page Language="C#" %>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">


<HTML>


<HEAD>


<TITLE>Dynamic Buttons</TITLE>




<SCRIPT runat="server">



//插入上面的C#代码


</SCRIPT>




<STYLE>

BODY {

}{ FONT-SIZE: 9pt; FONT-FAMILY: Tahoma,宋体; TEXT-ALIGN: center }




TD {

}{ FONT-SIZE: 9pt; FONT-FAMILY: Tahoma,宋体; TEXT-ALIGN: center }


</STYLE>


</HEAD>


<BODY>


<FORM id="form1" runat="server">


<DIV>


<ASP:LABEL id="lblPrompt" runat="server" text="?" enableviewstate="False" enabletheming="True"></ASP:LABEL>


<BR>


<BR>


<BR>


<ASP:PANEL id="pnlButtons" runat="server" width="560px">


<INPUT id="hidFirstPage" type="hidden" value="0" runat="server"><INPUT id="hidPageCount" type="hidden" runat="server">


<ASP:DATAGRID id="dg" runat="server" width="100%" pagesize="5" autogeneratecolumns="False" bordercolor="#CC9966"


borderstyle="None" borderwidth="1px" backcolor="White" cellpadding="4" onitemdatabound="dg_ItemDataBound">


<FOOTERSTYLE forecolor="#330099" backcolor="#FFFFCC"></FOOTERSTYLE>


<HEADERSTYLE font-bold="True" forecolor="#FFFFCC" backcolor="#990000"></HEADERSTYLE>


<PAGERSTYLE horizontalalign="Center" forecolor="#330099" backcolor="#FFFFCC"></PAGERSTYLE>


<SELECTEDITEMSTYLE font-bold="True" forecolor="#663399" backcolor="#FFCC66"></SELECTEDITEMSTYLE>


<ITEMSTYLE forecolor="#330099" backcolor="White"></ITEMSTYLE>


<COLUMNS>


<ASP:BOUNDCOLUMN datafield="产品ID" headertext="产品ID">


<HEADERSTYLE width="60px"></HEADERSTYLE>


</ASP:BOUNDCOLUMN>


<ASP:BOUNDCOLUMN datafield="产品名称" headertext="产品名称"></ASP:BOUNDCOLUMN>


<ASP:BOUNDCOLUMN datafield="公司名称" headertext="供应商">


<HEADERSTYLE width="80px"></HEADERSTYLE>


</ASP:BOUNDCOLUMN>


<ASP:BOUNDCOLUMN datafield="类别名称" headertext="类别">


<HEADERSTYLE width="100px"></HEADERSTYLE>


</ASP:BOUNDCOLUMN>


</COLUMNS>


</ASP:DATAGRID>


</ASP:PANEL></DIV>


<BR>


<BR>


<BR>


<ASP:HYPERLINK id="lnkReload" runat="server" width="80px" navigateurl="Pager.aspx" enableviewstate="False">重载</ASP:HYPERLINK>


</FORM>


</BODY>


</HTML>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: