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");
            }

        }

    }

}


posted on 2005-06-27 14:30  DoNet鸟  阅读(583)  评论(0编辑  收藏  举报

导航