DataGrid分页技巧

WebForm1.aspx
< %@ Page  language ="c#"  EnableViewState  = "true"  Codebehind ="DataGridPaging.aspx.cs"
 AutoEventWireup
="false"  Inherits ="eMeng.Exam.DataGridPaging.DataGridPaging"  % >
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
< HTML >
    
< HEAD >
        
< meta  content ="Visual Basic 7.0"  name ="CODE_LANGUAGE" >
        
< meta  content ="JavaScript"  name ="vs_defaultClientScript" >
        
< meta  content ="http://schemas.microsoft.com/intellisense/ie5"  name ="vs_targetSchema" >
    
</ HEAD >
    
< body  MS_POSITIONING ="GridLayout" >
        
< form  id ="Form1"  runat ="server" >
            
< asp:datagrid  id ="MyDataGrid"  runat ="server"  AutoGenerateColumns ="False"  HorizontalAlign ="Center"
                AlternatingItemStyle-BackColor
="#eeeeee"  HeaderStyle-BackColor ="#aaaadd"  Font-Size ="8pt"  Font-Name ="Verdana"
                CellPadding
="3"  BorderWidth ="1px"  BorderColor ="Black"  OnPageIndexChanged ="MyDataGrid_Page"
                PagerStyle-HorizontalAlign
="Right"  PagerStyle-Mode ="NumericPages"  PageSize ="5"  AllowPaging ="True"
                Font-Names
="Verdana" >
                
< AlternatingItemStyle  BackColor ="#EEEEEE" ></ AlternatingItemStyle >
                
< HeaderStyle  Font-Bold ="True"  HorizontalAlign ="Center"  BackColor ="#AAAADD" ></ HeaderStyle >
                
< Columns >
                    
< asp:BoundColumn  DataField ="Title"  HeaderText ="标题" >
                        
< HeaderStyle  Width ="450px" ></ HeaderStyle >
                    
</ asp:BoundColumn >
                    
< asp:BoundColumn  DataField ="pubdate"  HeaderText ="发表日期"  DataFormatString ="{0:yyyy-MM-dd hh:mm:ss}" >
                        
< HeaderStyle  Width ="70px" ></ HeaderStyle >
                    
</ asp:BoundColumn >
                    
< asp:ButtonColumn  Text ="选择"  CommandName ="Select" >
                        
< HeaderStyle  Width ="30px" ></ HeaderStyle >
                    
</ asp:ButtonColumn >
                
</ Columns >
                
< PagerStyle  HorizontalAlign ="Right"  PageButtonCount ="5"  Mode ="NumericPages" ></ PagerStyle >
            
</ asp:datagrid >
            
< style ="FONT-SIZE:9pt"  align ="center" >
                
< asp:label  id ="lblPageCount"  runat ="server" ></ asp:label > &nbsp;
                
< asp:label  id ="lblCurrentIndex"  runat ="server" ></ asp:label >
                
< asp:linkbutton  id ="btnFirst"  onclick ="PagerButtonClick"  runat ="server"  Font-Name ="verdana"  Font-size ="8pt"
                    ForeColor
="navy"  CommandArgument ="0" ></ asp:linkbutton > &nbsp;
                
< asp:linkbutton  id ="btnPrev"  onclick ="PagerButtonClick"  runat ="server"  Font-Name ="verdana"  Font-size ="8pt"
                    ForeColor
="navy"  CommandArgument ="prev" ></ asp:linkbutton > &nbsp;
                
< asp:linkbutton  id ="btnNext"  onclick ="PagerButtonClick"  runat ="server"  Font-Name ="verdana"  Font-size ="8pt"
                    ForeColor
="navy"  CommandArgument ="next" ></ asp:linkbutton > &nbsp;
                
< asp:linkbutton  id ="btnLast"  onclick ="PagerButtonClick"  runat ="server"  Font-Name ="verdana"  Font-size ="8pt"
                    ForeColor
="navy"  CommandArgument ="last" ></ asp:linkbutton >
            
</ p >
        
</ form >
    
</ body >
</ HTML >

WebForm1.aspx.cs
using  System;
using  System.Collections;
using  System.ComponentModel;
using  System.Data;
using  System.Data.OleDb;
using  System.Drawing;
using  System.Web;
using  System.Web.SessionState;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.HtmlControls;

namespace  eMeng.Exam.DataGridPaging
{
    
/// <summary>
    
/// DataGridPaging 的摘要说明。
    
/// </summary>

    public class DataGridPaging : System.Web.UI.Page
    
{
        
protected System.Web.UI.WebControls.DataGrid MyDataGrid;
        
protected System.Web.UI.WebControls.Label lblPageCount;
        
protected System.Web.UI.WebControls.Label lblCurrentIndex;
        
protected System.Web.UI.WebControls.LinkButton btnFirst;
        
protected System.Web.UI.WebControls.LinkButton btnPrev;
        
protected System.Web.UI.WebControls.LinkButton btnNext;
        
protected System.Web.UI.WebControls.LinkButton btnLast;
        
private OleDbConnection cn = new OleDbConnection();

        
private void Page_Load(object sender, System.EventArgs e)
        
{
            
// 在此处放置用户代码以初始化页面
            btnFirst.Text = "最首页";
            btnPrev.Text 
= "前一页";
            btnNext.Text 
= "下一页";
            btnLast.Text 
= "最后页";
            OpenDatabase();
            ShowStats();                                                      
            BindGrid();
        }

        
private void OpenDatabase()
        
{
            cn.ConnectionString 
= @"Auto Translate=True;User ID=sa;Tag with column collation when possible=False;
                                    Data Source='192.168.0.99';Password=4703;Initial Catalog=pubs;Use Procedure for Prepare=1;
                                    Provider='SQLOLEDB.1';Persist Security Info=True;Workstation ID=DNB07;Use Encryption for Data=False;
                                    Packet Size=4096
";

            cn.Open();
        }

        
private void ShowStats()
        
{
            lblCurrentIndex.Text 
= "第 " + (MyDataGrid.CurrentPageIndex + 1).ToString() + " 页";
            lblPageCount.Text 
= "总共 " + MyDataGrid.PageCount.ToString() + " 页";
            btnFirst.Enabled 
= !(MyDataGrid.CurrentPageIndex == 0);
            btnPrev.Enabled 
= (MyDataGrid.CurrentPageIndex > 0); 
            btnNext.Enabled 
= (MyDataGrid.CurrentPageIndex+1 < MyDataGrid.PageCount);
            btnLast.Enabled 
= (MyDataGrid.CurrentPageIndex+1 < MyDataGrid.PageCount);
        }


        
public void PagerButtonClick(object sender, EventArgs e)
        
{
            
string arg = ((LinkButton)sender).CommandArgument.ToString();
            
switch(arg)
            
{
                
case "next":
                    
if (MyDataGrid.CurrentPageIndex < (MyDataGrid.PageCount - 1))
                    
{
                        MyDataGrid.CurrentPageIndex 
+= 1;
                    }

                    
break;
                
case "prev":
                    
if (MyDataGrid.CurrentPageIndex > 0)
                    
{
                        MyDataGrid.CurrentPageIndex 
-= 1;
                    }

                    
break;
                
case "last":
                    MyDataGrid.CurrentPageIndex 
= (MyDataGrid.PageCount - 1);
                    
break;
                
default:
                    MyDataGrid.CurrentPageIndex 
= System.Convert.ToInt32(arg);
                    
break;
            }

            BindGrid();
            ShowStats();
        }

        
public void BindGrid()
        
{
            OleDbConnection myConnection 
= cn;
            DataSet ds  
= new DataSet();
            OleDbDataAdapter adapter  
= new OleDbDataAdapter("Select Title,pubdate from titles", myConnection);
            adapter.Fill(ds, 
"Document");
            MyDataGrid.DataSource 
= ds.Tables["Document"].DefaultView;
            MyDataGrid.DataBind();
            ShowStats();
        }

        
public void MyDataGrid_Page(object sender, DataGridPageChangedEventArgs e)
        
{
        
//    int startIndex ;
        
//    startIndex = MyDataGrid.CurrentPageIndex * MyDataGrid.PageSize;
            MyDataGrid.CurrentPageIndex = e.NewPageIndex;
            BindGrid();
            ShowStats();
        }


        
#region Web Form Designer generated code
        
override protected void OnInit(EventArgs e)
        
{
            
//
            
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
            
//
            InitializeComponent();
            
base.OnInit(e);
        }


        
/// <summary>
        
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
        
/// 此方法的内容。
        
/// </summary>

        private void InitializeComponent()
        
{
            
this.MyDataGrid.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.MyDataGrid_ItemCommand);
            
this.Load += new System.EventHandler(this.Page_Load);

        }

        
#endregion


        
private void MyDataGrid_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
        
{
            
if (e.CommandName == "Select")
            
{
                Response.Write(
"Hello");
            }

        }

    }

}


你可能感兴趣的:(datagrid)