首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动专 题SUNIBM微 软微 创精 华Donews人 邮
我的技术中心 
我的分类 我的文档
全部文章 发表文章
专栏管理 使用说明



 RSS 订阅 
最新文档列表
Windows/.NET
.NET  (rss)    
Visual C++  (rss)    
Delphi  (rss)    
Visual Basic  (rss)    
ASP  (rss)    
JavaScript  (rss)    
Java/Linux
Java  (rss)    
Perl  (rss)    
综合
其他开发语言  (rss)    
文件格式  (rss)    
企业开发
游戏开发  (rss)    
网站制作技术  (rss)    
数据库
数据库开发  (rss)    
软件工程
其他  (rss)    

积极原创作者 
yjz0065 (115)
iiprogram (70)
ShowLong (2)
coofucoo (106)
psyl (153)
capsicum29 (8)
qdzx2008 (51)
cyp403 (16)
lphpc (31)
smallnest (63)
CSDN - 文档中心 - .NET 阅读:3496   评论: 0    参与评论
标题   EnableViewState="false"的DataGrid分页     选择自 qiushuiwuhen 的 Blog
关键字   秋水无恨 EnableViewState="false" OnItemCreated ListItemType.Pager
出处  

用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>


相关文章
对该文的评论