2

グリッド ビューの PageSize プロパティをオーバーライドして既定値を 100 に設定しようとしていますが、コードを実行すると、基本クラスで定義された既定値が使用されます。デフォルトのページサイズを設定する方法を教えてください。必要に応じてカスタマイズするために、グリッドビュー コントロールを拡張しています。コードは次のとおりです。

    [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

2 番目と 3 番目の方法は PageSize を 100 に変更しますが、aspx ページで変更する可能性がなく、グリッドビューごとに変更されます。

私がそれがうまくいくとわかった最善の方法は、プロパティを再作成することです:

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

そうすることで、デフォルトの PageSize は 100 になります (aspx PageSize="50" または cs gv.PageSize = 50 ファイル内)。

于 2013-09-16T12:29:22.583 に答える