| 
                         改造办法是自己写一个控件,让它继承GridView或Repeater,并实现IPageableItemContainer 接口。下面要发的是国外某高手写的代码,测试有效。具体使用的时候,要建一个类库项目,把代码编译成dll后,就可以添加到VS的工具箱里了!  一、自定义Repeater  复制代码 代码如下:  using System.Web.UI;  using System.Web.UI.WebControls;  namespace WYJ.Web.Controls  {  /// <summary>  /// Repeater with support for DataPager  /// </summary>  [ToolboxData("<{0}:DataPagerRepeater runat=server PersistentDataSource=true></{0}:DataPagerRepeater>")]  public class DataPagerRepeater : Repeater,System.Web.UI.WebControls.IPageableItemContainer,INamingContainer  {  /// <summary>  /// Number of rows to show  /// </summary>  public int MaximumRows { get { return ViewState["MaximumRows"] != null ? (int)ViewState["MaximumRows"] : -1; } }  /// <summary>  /// First row to show  /// </summary>  public int StartRowIndex { get { return ViewState["StartRowIndex"] != null ? (int)ViewState["StartRowIndex"] : -1; } }  /// <summary>  /// Total rows. When PagingInDataSource is set to true you must get the total records from the datasource (without paging) at the FetchingData event  /// When PagingInDataSource is set to true you also need to set this when you load the data the first time.  /// </summary>  public int TotalRows { get { return ViewState["TotalRows"] != null ? (int)ViewState["TotalRows"] : -1; } set { ViewState["TotalRows"] = value; } }  /// <summary>  /// If repeater should store data source in view state. If false you need to get and bind data at post back. When using a connected data source this is handled by the data source.  /// </summary>  public bool PersistentDataSource  {  get { return ViewState["PersistentDataSource"] != null ? (bool)ViewState["PersistentDataSource"] : true; }  set { ViewState["PersistentDataSource"] = value; }  }  /// <summary>  /// Set to true if you want to handle paging in the data source.  /// Ex if you are selecting data from the database and only select the current rows  /// you must set this property to true and get and rebind data at the FetchingData event.  /// If this is true you must also set the TotalRecords property at the FetchingData event.  /// </summary>  /// <seealso cref="FetchingData"/>  /// <seealso cref="TotalRows"/>  public bool PagingInDataSource  {  get { return ViewState["PageingInDataSource"] != null ? (bool)ViewState["PageingInDataSource"] : false; }  set { ViewState["PageingInDataSource"] = value; }  }  /// <summary>  /// Checks if you need to rebind data source at postback  /// </summary>  public bool NeedsDataSource  {  get  {  if (PagingInDataSource)  return true;  if (IsBoundUsingDataSourceID == false && !Page.IsPostBack)  return true;  if (IsBoundUsingDataSourceID == false && PersistentDataSource == false && Page.IsPostBack)  return true;  else  return false;  }  }  /// <summary>  /// Loading ViewState  /// </summary>  /// <param name="savedState"></param>  protected override void LoadViewState(object savedState)  {  base.LoadViewState(savedState);  //if (Page.IsPostBack)  //{  // if (!IsBoundUsingDataSourceID && PersistentDataSource && ViewState["DataSource"] != null)  // {  // this.DataSource = ViewState["DataSource"];  // this.DataBind(true);  // }  // if (IsBoundUsingDataSourceID)  // {  // this.DataBind();  // }  /                         (编辑:莱芜站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |