| 演示地址: 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
>
转致EricBlog
| |||
ASP.net中数据分页(演示+代码)
最新推荐文章于 2026-01-06 18:31:59 发布
博客涉及ASP和ASP.NET相关信息技术内容,包含如hyperlink、string、datagrid等元素,可能与产品开发相关。



}
}
1万+

被折叠的 条评论
为什么被折叠?



