Discuz!NT
欢迎 游客 , 注册 | 登录 | 会员 | 界面 | 简洁版本 | 在线 | 帮助
商都网教育宝典宝库

发表新主题 回复该主题
本主题被查看559次, 共1个帖子, 1页, 当前为第1页     选择页数: 1      跳转到第   上一主题   下一主题
标题: ASP.NET技巧:DataGrid传统分页方式
我是一只不会游泳的鱼
管理员
UID: 19
来自:
精华: 0
积分: 35
帖子: 23
注册: 2007-8-24 14:48:00
状态: 离线
威望: 2.00
金钱: 16.05 元
只看楼主 2007-08-24 15:21
ASP.NET技巧:DataGrid传统分页方式
此分页方式与传统ASP分页方式相仿.
DataGridPage.aspx
<%@ Page language="c#" Codebehind="DataGridPage.aspx.cs" AutoEventWireup="false" Inherits="netCRM.DataGridPage" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
  <title>DataGridPage</title>
  <meta name="GENERATOR" C>
  <meta name="CODE_LANGUAGE" C>
  <meta name="vs_defaultClientScript" c>
  <meta name="vs_targetSchema" chttp://schemas.microsoft.com/intellisense/ie5">http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITI>
  <form id="Form1" method="post" runat="server">
  <asp:datagrid id="DataGrid1" runat="server" AlternatingItemStyle-BackColor="#eeeeee" HeaderStyle-BackColor="#aaaadd"
    Font-Size="8pt" Font-Name="Verdana" CellPadding="3" BorderWidth="1px" BorderColor="Black"
    PagerStyle-Horiz PagerStyle-Mode="NumericPages"
    PageSize="5" Font-Names="Verdana" Width="100%">
    <AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle>
    <HeaderStyle BackColor="#AAAADD"></HeaderStyle>
    <PagerStyle Horiz Mode="NumericPages"></PagerStyle>
  </asp:datagrid>
  </form>
  <TABLE cellSpacing="0" cellPadding="1" width="100%" bgColor="#aaaadd" border="0">
  <TBODY>
    <TR>
    <TD>
      <TABLE cellSpacing="0" cellPadding="4" width="100%" bgColor="#fef8e2" border="0">
      <TBODY>
        <TR>
        <TD class="M" noWrap align="center"><asp:Literal id="Literal1" runat="server"></asp:Literal></TD>
        </TR>
        <TR>
        <TD class="C" noWrap align="center"><asp:Literal id="Literal2" runat="server"></asp:Literal></TD>
        </TR>
      </TBODY>
      </TABLE>
    </TD>
    </TR>
  </TBODY>
  </TABLE>
</body>
</HTML>
DataGridPage.aspx.cs
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
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 netCRM
{
/// <summary>
/// DataGridPage 的摘要说明。
/// </summary>
public class DataGridPage : System.Web.UI.Page
{
  protected System.Web.UI.WebControls.Literal Literal1;
  protected System.Web.UI.WebControls.Literal Literal2;
  protected System.Web.UI.WebControls.DataGrid DataGrid1;
  private void Page_Load(object sender, System.EventArgs e)
  {
  // 在此处放置用户代码以初始化页面
  if(!IsPostBack)
  {
    BindGrid();
  }
  }
  private void BindGrid()
  {
  string c;
  string sql="Select * from Orders";
  SqlConnection conn = new  SqlConnection(connstring);
  conn.Open();
  DataSet ds = new DataSet();
  SqlDataAdapter sqlAdapter = new SqlDataAdapter(sql,conn);
  sqlAdapter.Fill(ds,"users");
  DataView dataview = new DataView();
  dataview = ds.Tables[0].DefaultView;
  DataGrid1.DataSource = ds.Tables[0].DefaultView;
  DataGrid1.DataBind();
  string cPage;
  int pageSize = 10;
  int currentPage;
  int pageCount;
  int numResults = 0;
  if (Request.QueryString["page"]==null)
  {
    cPage="1";
  }
  else
  {
    cPage=Request.QueryString["page"].ToString();
  }
  try
  {
    currentPage = Int32.Parse(cPage);
  }
  catch
  {
    currentPage = 1;
  }
  numResults = 0;
  int start = (int)((currentPage - 1) * pageSize);
  int to = (int)(currentPage * pageSize);
  if (start <= 0) start = 0;
  numResults = dataview.Count;
  int a1=0;
  pageCount = Math.DivRem(numResults,pageSize,out a1);
  if (a1>0)
  {
    pageCount++;
  }
  if(currentPage>pageCount || currentPage<=0)
  {
    currentPage = 1;
  }
  if(currentPage==pageCount)
  {
    to = dataview.Count;
  }
  // Create one DataTable with one column.
  DataTable myTable = new DataTable("myTable");
  myTable = dataview.Table.Clone();
  //DataColumn colItem1 = new DataColumn("name",Type.GetType("System.String"));
  //DataColumn colItem2 = new DataColumn("types",Type.GetType("System.String"));
  //DataColumn colItem3 = new DataColumn("vendor",Type.GetType("System.String"));
  //myTable.Columns.Add(colItem1);
  //myTable.Columns.Add(colItem2);
  //myTable.Columns.Add(colItem3);
  //add row
  DataRow NewRow;
  for(int i=start;i<numResults;i++)
  {
    if(i<to)
    {
    NewRow = myTable.NewRow();
    for(int k=0;k<dataview.Table.Columns.Count;k++)
    {
      NewRow[k] = dataview.Table.Rows[i][k];
    }
    myTable.Rows.Add(NewRow);
    }
  }
  myTable.AcceptChanges();
  DataView resultDataview = new DataView(myTable);
  DataGrid1.DataSource = resultDataview;
  DataGrid1.DataBind();
  /// <summary>
  ///  生成页导航条。
  /// </summary>
  string strNav = "";
  int endpage;
  if (currentPage>1)
  {
    strNav += "<a href='?page="+ (currentPage-1).ToString() +"'>上一页</a>  ";
  }
  if (currentPage>11)
  {
    strNav += "<a href='?page=1'>1</a> ...";
  }
  if(pageCount>currentPage+10)
  {
    endpage = currentPage+10;
  }
  else
  {
    endpage = pageCount;
  }
  for (int i=currentPage-10;i<endpage+1;i++)
  {
    if(i>=1)
    {
    if (i==currentPage)
    {
      strNav +="<font color=#990000><strong>"+ i.ToString() +"</strong></font> ";
    }
    else
    {
      strNav += "<a href='?page="+ i.ToString() +"'>"+ i.ToString() +"</a> ";
    }
    }
  }
  if((currentPage+10)<pageCount)
  {
    strNav += "... <a href='?page="+ pageCount.ToString() +"'>"+ pageCount.ToString() +"</a>";
  }
  if(currentPage<pageCount)
  {
    strNav += " <a href='?page="+ (currentPage+1).ToString() +"'>下一页</a>  ";
  }
  Literal1.Text = strNav; 
  Literal2.Text = "共 "+ numResults.ToString() +" 条供应信息,当前显示第 "+
    (start+1).ToString() +" - "+ to.ToString()  +" 条,共 "+ pageCount.ToString() +" 页";
  }
  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
  //
  // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
  //
  InitializeComponent();
  base.OnInit(e);
  }
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
  this.Load += new System.EventHandler(this.Page_Load);
  }
  #endregion
}
}
#1  
发表新主题 回复该主题
本主题被查看559次, 共1个帖子, 1页, 当前为第1页     选择页数: 1      跳转到第







现在的时间是 2008-08-30 05:40:08

版权所有 商都网教育宝典
         Powered by Discuz!NT 1.0.6666    Copyright © 2001-2008 Comsenz Inc.
Processed in 0.048 seconds