分享
 
 
 

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

王朝c/c++·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

演示地址: 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>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有