2

SiteMapDataSource (階層) にバインドしています。

データソースからデータを取得するために PerformDataBinding をオーバーライドしています。

ページの読み込み時にすべてがうまく機能します。しかし、ページのどこかでポストバックを実行すると、PerformDataBinding メソッドが呼び出されず、実際にはメニュー項目がレンダリングされません (PerformDataBinding は呼び出されませんでした)。

4

1 に答える 1

3

なぜこれが起こっているのか分かりませんが、私はそれを修正しています。驚くべきことに、私が見つけることができた HierarchicalDataBoundControl のすべての例 (msdn からでも) は、これを行っていました。ただし、ここに回避策があります。

    private bool dataBound = false;
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        if (this.Page.IsPostBack)
        {
            this.DataBound += delegate { dataBound = true; };
            this.Page.Load += delegate { if (!dataBound) DataBind(); };
        }
    }
于 2010-04-27T12:28:56.060 に答える