My FAQ,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > .NET > Web Forms
EnableViewState="false"的DataGrid分页
作者:qiushuiwuhen 时间:2002-01-25 12:12 出处:互联网 责编:MyFAQ
              摘要:EnableViewState="false"的DataGrid分页

用DataGrid默认的分页方式有两个小问题

1.要有viewstate,由你表的数据量决定,一般情况下较大
2.用的是PostBack方式,刷新的时候提示是否要重发消息

所以改为取消viewstate在OnItemCreated生成HyperLink 方式,避免了以上两个问题

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script language="C#" runat="server">
 public void ItemCreated(Object sender, DataGridItemEventArgs e) {
  ListItemType elemType = e.Item.ItemType;
  if (elemType == ListItemType.Pager)
  {
   TableCell pager = (TableCell) e.Item.Controls[0];
   for (int i=0; i<pager.Controls.Count; i+=2)
   {
    Control o = pager.Controls[i];
    if (o is LinkButton)
    {
     LinkButton lb = (LinkButton) o;
     HyperLink hl=new HyperLink();
     hl.NavigateUrl=Request.Path  + "?page="+lb.CommandArgument;
     hl.Text="[ "+lb.Text+" ]";
     pager.Controls.RemoveAt(i);
     pager.Controls.AddAt(i,hl);
    }
    else
    {
     Label l = (Label) o;
     l.Text = "Page " + l.Text;
    }
   }
  }
 }
    protected void Page_Load(Object sender, EventArgs e)
    {
     if(!Page.IsPostBack){
      int pageIndex=0;
      try{pageIndex=Int32.Parse(Request["page"])-1;}catch(Exception ex){}
      Response.Write(MyDataGrid.PageCount);
      MyDataGrid.CurrentPageIndex=pageIndex;
      BindData();
     }
    }

 void BindData(){
//绑定数据库,略       
 }
</script> 
<HTML>
  <body>
    <form id="Form1" method="post" runat="server">
      <asp:datagrid id="MyDataGrid" runat="server" EnableViewState="false"  AllowPaging="True" PageSize="10"
        OnItemCreated="ItemCreated"
  PagerStyle-BackColor="#FFFFFF"
    PagerStyle-HorizontalAlign="Right"
    PagerStyle-Mode="NumericPages">
     </asp:datagrid>
   </form>
  </body>
</HTML>

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 myfaq.com.cn All rights reserved. www.myfaq.com.cn 版权所有