.NET开发

本类阅读TOP10

·NHibernate快速指南(翻译)
·vs.net 2005中文版下载地址收藏
·【小技巧】一个判断session是否过期的小技巧
·VB/ASP 调用 SQL Server 的存储过程
·?dos下编译.net程序找不到csc.exe文件
·通过Web Services上传和下载文件
·学习笔记(补)《.NET框架程序设计(修订版)》--目录
·VB.NET实现DirectDraw9 (2) 动画
·VB.NET实现DirectDraw9 (1) 托管的DDraw
·建站框架规范书之——文件命名

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
Eric的数据分页(演示+代码)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

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



相关文章

相关软件