2013-08-28 238 views
1

我想覆蓋網格視圖的PageSize屬性以將默認值設置爲100,但是當代碼執行時,它需要在基類中定義的默認值。任何人都可以請幫助我如何設置我的默認PageSize。我正在擴展GridView控件以根據需要進行定製。 下面是代碼:設置GridView的默認頁面大小

[DefaultValue(100)] 
    public override int PageSize 
    { 
     get 
     { 
      return base.PageSize; 
     } 
     set 
     { 
      base.PageSize = value; 
     } 
    } 

或者我應該嘗試設置我的默認頁SIE在像一些重載方法。

protected override void OnInit(EventArgs e) 
    { 
     base.PageSize = 100; 
     base.OnInit(e); 
    } 

或者

protected override void OnLoad(EventArgs e) 
    { 
     base.PageSize = 100; 
     base.OnLoad(e); 
    } 

回答

0

DefaultValueAttribute並不意味着真正的默認值,它是設計師VS只 - 第一種方法是行不通的。 MSDN引用:

DefaultValueAttribute不會使用該屬性的值自動初始化成員。您必須在代碼中設置初始值。

http://msdn.microsoft.com/en-us/library/system.componentmodel.defaultvalueattribute%28v=vs.110%29.aspx

第二種和第三種方法將改變每頁爲100,但它會爲每個GridView的更改,恕不可能改變它在aspx頁面。

我發現它的工作

最好的辦法是重新創建屬性:

private int _pageSize = 100; 
public override int PageSize 
{ 
    get 
    { 
     return this._pageSize; 
    } 
    set 
    { 
     this._pageSize = value; 
    } 
} 

以這種方式默認每頁將是100,除非設置,否則每個gridview的基礎上(在ASPX每頁=「50」或cs gv.PageSize = 50個文件)。