在高音区尖叫

  :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::
PageChange.ascx
================================================================
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="PageChange.ascx.cs" Inherits="Ex_Test.PageChange" TargetSchema="http://schemas.microsoft.com/intellisense/ie5"%>
<FONT face="宋体">
    
<TABLE id="Table1" cellSpacing="1" cellPadding="1" width="98%" border="0">
        
<TR>
            
<TD align="right"><asp:linkbutton id="FirstPage" runat="server">[首 页]</asp:linkbutton>&nbsp;
                
<asp:linkbutton id="PrevPage" runat="server">[上一页]</asp:linkbutton>&nbsp;
                
<asp:linkbutton id="NextPage" runat="server">[下一页]</asp:linkbutton>&nbsp;
                
<asp:linkbutton id="LastPage" runat="server">[末 页]</asp:linkbutton>&nbsp;
                
<asp:literal id="Literal1" runat="server" Text="转到第"></asp:literal><asp:textbox id="NewPageIndex" runat="server" Width="31px"></asp:textbox><asp:literal id="Literal2" runat="server" Text="页"></asp:literal>&nbsp;
                
<asp:button id="NewPageGo" runat="server" Text="Go"></asp:button>&nbsp;</TD>
        
</TR>
    
</TABLE>
</FONT>

PageChange.ascx.cs
===================================================================
namespace Ex_Test
{
    
using System;
    
using System.Data;
    
using System.Drawing;
    
using System.Web;
    
using System.Web.UI.WebControls;
    
using System.Web.UI.HtmlControls;
    
using System.Data.SqlClient;

    
/// <summary>
    
///        PageChange 的摘要说明。
    
/// </summary>

    public abstract class PageChange : System.Web.UI.UserControl
    
{
        
protected System.Web.UI.WebControls.Button NewPageGo;
        
protected System.Web.UI.WebControls.Literal Literal2;
        
protected System.Web.UI.WebControls.TextBox NewPageIndex;
        
protected System.Web.UI.WebControls.Literal Literal1;
        
protected System.Web.UI.WebControls.LinkButton LastPage;
        
protected System.Web.UI.WebControls.LinkButton NextPage;
        
protected System.Web.UI.WebControls.LinkButton PrevPage;
        
protected System.Web.UI.WebControls.LinkButton FirstPage;
        
protected int currentpage;
        
protected int pagesize;
        
protected string proc;
        
protected System.Web.UI.WebControls.DataGrid datagrid;


        
public int _CurrentPage
        
{
            
get
            
{
                
return currentpage;
            }

            
set
            
{
                currentpage 
= value;
            }

        }


        
public int _pageSize
        
{
            
get
            
{
                
return pagesize;
            }

            
set
            
{
                pagesize 
= value;
            }

        }


        
public string _proc
        
{
            
get
            
{
                
return proc;
            }

            
set
            
{
                proc 
= value;
            }

        }


        
public DataGrid _datagrid
        
{
            
get
            
{
                
return datagrid;
            }

            
set
            
{
                datagrid 
= value;
            }

        }


        
protected int rowcount;
        
private void Page_Load(object sender, System.EventArgs e)
        
{
            
// 在此处放置用户代码以初始化页面
            if(!IsPostBack)
            
{
                
using(SqlConnection conn = new SqlConnection("User id=sa;password=admin;server=server-mk;initial catalog=pubs;timeout=90")
                
{
                    SqlCommand cmd 
= new SqlCommand("select count(*) as expr1 from authors",conn);
                    cmd.Connection.Open();
                    rowcount 
= (int)cmd.ExecuteScalar();
                    cmd.Connection.Close();
                    ViewState[
"rowscount"= rowcount;
                }

                ViewState[
"currentpage"= currentpage;
                FillGrid(proc,currentpage,pagesize,datagrid);
            }

        }


        
Web Form Designer generated code

        
private void FillGrid(string proc,int currentpage,int pagesize,DataGrid datagrid)
        
{
            
using(SqlConnection conn = new SqlConnection("User id=sa;password=admin;server=server-mk;initial catalog=pubs;timeout=90")
            
{
                SqlCommand cmd 
= new SqlCommand(proc,conn);
cmd.CommandType 
= CommandType.StoredProcedure;
                cmd.Parameters.Add(
"@CurrentPage",currentpage);
                cmd.Parameters.Add(
"@PageSize",pagesize);
                cmd.Connection.Open();

                SqlDataReader sdr 
= cmd.ExecuteReader();
datagrid.DataSource 
= sdr;
                datagrid.DataBind();
                sdr.Close();
                cmd.Connection.Close();
            }

        }


        
//首页
        private void FirstPage_Click(object sender, System.EventArgs e)
        
{
            
//disabled首页按钮和上一页按钮
            FirstPage.Enabled = false;
            PrevPage.Enabled 
= false;    
            currentpage 
= 0;
         ViewState[
"currentpage"= currentpage;
            FillGrid(proc,currentpage,pagesize,datagrid);
            
//如果不止一页
            if((int)ViewState["rowscount"]>((int)ViewState["currentpage"]+1)*pagesize)
            
{
                NextPage.Enabled 
= true;
            }

            
if((int)ViewState["rowscount"]>((int)ViewState["currentpage"]+1)*pagesize)
            
{
                LastPage.Enabled 
= true;
            }

        }


        
//上一页
        private void PrevPage_Click(object sender, System.EventArgs e)
        
{

            NextPage.Enabled 
= true;
            LastPage.Enabled 
= true;
         currentpage 
= (int)ViewState["currentpage"]-1;
            ViewState[
"currentpage"= currentpage;
            FillGrid(proc,currentpage,pagesize,datagrid);    
            
//如果到首页则disabled首页和上一页按钮
            if((int)ViewState["currentpage"]==0)
            
{
                PrevPage.Enabled 
= false;
                FirstPage.Enabled 
= false;
                
//return;
            }

        }


        
//下一页
        private void NextPage_Click(object sender, System.EventArgs e)
        
{
            ViewState[
"currentpage"= (int)ViewState["currentpage"]+1;
            currentpage 
= (int)ViewState["currentpage"];
            FillGrid(proc,currentpage,pagesize,datagrid);
            PrevPage.Enabled 
= true;
            FirstPage.Enabled 
= true;
            
//如果已经到了最后一页
            if(((int)ViewState["currentpage"]+1)*pagesize>(int)ViewState["rowscount"])
            
{
                NextPage.Enabled 
= false;
                LastPage.Enabled 
= false;
            }

        }


        
//末页
        private void LastPage_Click(object sender, System.EventArgs e)
        
{
            LastPage.Enabled 
= false;
         NextPage.Enabled 
= false;
            ViewState[
"currentpage"= (int)Math.Ceiling((int)ViewState["rowscount"]/pagesize);
            currentpage 
= (int)ViewState["currentpage"];
            FillGrid(proc,currentpage,pagesize,datagrid);
            
//如果有不止一页的纪录
            if((int)ViewState["currentpage"]>1)
            
{
                FirstPage.Enabled 
= true;
                PrevPage.Enabled 
= true;
            }

                
//如果只有一页的纪录
            else
            
{
FirstPage.Enabled 
= false;
                PrevPage.Enabled 
= false;
            }

        }


        
//跳转
        private void NewPage_Go(string i)
        
{
            
try
            
{
                
int PageIndex = Int32.Parse(i);
                
if (PageIndex<=0
                
{
                    PageIndex 
= 0;
                }

                
else
                
{
                    
if(PageIndex>(int)Math.Ceiling((int)ViewState["rowscount"]/pagesize))
                    
{
                        PageIndex 
= (int)Math.Ceiling((int)ViewState["rowscount"]/pagesize);
                    }

                    
else
                    
{
                        PageIndex
--;
                    }

                }

                
//简单起见,将所有的linkbutton全部改为enable=true
                FirstPage.Enabled = true;
                NextPage.Enabled 
= true;
                LastPage.Enabled 
= true;
                PrevPage.Enabled 
= true;
                ViewState[
"currentpage"= PageIndex;
                FillGrid(proc,(
int)ViewState["currentpage"],pagesize,datagrid);
            }

            
catch(Exception)
            
{
                
return;
            }

        }


        
private void NewPageGo_Click(object sender, System.EventArgs e)
        
{
         NewPage_Go(NewPageIndex.Text.Trim());
        }


    }

}

posted on 2005-04-11 17:42    阅读(121)  评论(0)    收藏  举报