调整 ASPxGridView 中的分页按钮自定义输出

对于 ASPxGridView,查看其本身功能,是直接读取整个数据库中的表,进行填充,然后内部计算出页数与分页按钮,对于大数据表如果一次性装载数据到内存,那就完蛋了.
我喜欢只抽取一页数据,然后绑定输出.对于如何进行数据分页,只抽取一页数据这里不做讨论!
不知道9版本的这个库,是不是也是一次性读数据的,我并不知道,因为我用的是8这个版本

我抽取一页数据后,发现输出的分页按钮,就是它内部自动计算好的结果,那只能替换这个HTML输出,便于实现自己的分页按钮!
通过分析,ASPxGridView中的分页对象为[ASPxGridViewPager],其ID为[DXBPager],这个是底部的那个按钮,对于表格顶部的是[DXTPager]

代码实现,首先定义一个对象,继承自 ASPxGridView

  
 

 

ASPxGridViewPager2X是继承自DX库中的[ASPxGridViewPager]类

  1. public class ASPxGridViewPager2X : ASPxGridViewPager  
  2. {  
  3.  public ASPxGridViewPager2X(DataGrid2X grid)  
  4.   : base(grid)  
  5.  {  
  6.   
  7.  }  
  8.   
  9.   
  10.  public override int PageCount  
  11.  {  
  12.   get  
  13.   {  
  14.    return _PageCount;// base.PageCount;   
  15.   }  
  16.  }int _PageCount;  
  17.   
  18.  internal void SetPageCount_2X(int p)  
  19.  {  
  20.   this._PageCount = p;  
  21.  }  
  22.   
  23.  public override int PageIndex  
  24.  {  
  25.   get  
  26.   {  
  27.    return _PageIndex;// base.PageIndex;   
  28.   }  
  29.  }int _PageIndex;  
  30.   
  31.  internal void SetPageIndex_2X(int p)  
  32.  {  
  33.   this._PageIndex = p;  
  34.  }  
  35.   
  36.  public string JScript  
  37.  {  
  38.   get { return this.Scripts.GetPagerOnClickFunction(this.ID);  }  
  39.  }  
  40.   
  41.  /// <summary>   
  42.  /// 总记录数   
  43.  /// </summary>   
  44.  public override int ItemCount  
  45.  {  
  46.   get  
  47.   {  
  48.    return _ItemCount;  
  49.   }  
  50.  }int _ItemCount;  
  51.   
  52.  internal void SetItemCount_2X(int itemCount)  
  53.  {  
  54.   this._ItemCount = itemCount;  
  55.   if (itemCount == 0)  
  56.   {  
  57.    this._PageIndex = 0;  
  58.    this._PageCount = 0;  
  59.   }     
  60.  }  
  61.   
  62.  protected override string GetItemElementOnClick(string id)  
  63.  {  
  64.   /*以下替换成自己的JS代码*/  
  65.   string btnIDFlag = id.ToUpper();  
  66.   switch (btnIDFlag)  
  67.   {  
  68.    case "PBF":  
  69.     return "g2x_doExecPager(1,0);";   
  70.    case "PBP":  
  71.     return "g2x_doExecPager(2," + (this.PageIndex + 1).ToString() + ");";  
  72.    case "PBN":  
  73.     return "g2x_doExecPager(3," + (this.PageIndex + 1).ToString() + ");";  
  74.    case "PBL":  
  75.     return "g2x_doExecPager(4,"this.PageCount.ToString() +");";  
  76.    case "PBA":  
  77.     return "g2x_cancelResult();"//"ALL"按钮,显示不过滤的记录,主要考虑查询后,取消条件,显示所有数据   
  78.   }  
  79.   
  80.   if (btnIDFlag.StartsWith("PN"))  
  81.   {  
  82.    string pageIdx = btnIDFlag.Replace("PN""");  
  83.    pageIdx = (Convert.ToInt32(pageIdx) + 1).ToString();  
  84.    return "g2x_doExecPager(5," + pageIdx + ");";//  + this.Grid.ClientInstanceName + ".GotoPage(0);";   
  85.   }  
  86.   
  87.   return string.Empty;  
  88.   
  89.  }  
  90.   
  91.   
  92.   
  93.  //public override DevExpress.Web.ASPxPager.SummaryProperties Summary   
  94.  //{   
  95.  //    get   
  96.  //    {   
  97.  //        base.Summary.AllPagesText = "xx";   
  98.  //        return base.Summary;   
  99.  //    }   
  100.  //}   
  101.   
  102. }  
posted @ 2011-10-13 10:56  gaoxuzhao  阅读(994)  评论(1)    收藏  举报