2

我试图覆盖网格视图的 PageSize 属性以将默认值设置为 100,但是当代码执行时,它采用基类中定义的默认值。谁能帮助我如何设置我的默认页面大小。我正在扩展 gridview 控件以根据我的需要进行自定义。这是代码:

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

或者我应该尝试以某种被覆盖的方法设置我的默认 Page 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);
    }
4

1 回答 1

0

DefaultValueAttribute 并不意味着真正的默认值,它仅适用于 VS 设计器 - 第一种方法不起作用。引用 MSDN:

DefaultValueAttribute 不会导致成员使用属性值自动初始化。您必须在代码中设置初始值。

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

第二种和第三种方法会将 PageSize 更改为 100,但它会为每个 gridview 更改,而无法在 aspx 页面中更改它。

我发现它工作的最佳方法是重新创建该属性:

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

这样,默认 PageSize 将为 100,除非在每个 gridview 基础上另行设置(在 aspx PageSize="50" 或 cs gv.PageSize = 50 个文件中)。

于 2013-09-16T12:29:22.583 回答