2010-04-22 3 views
2

Je suis lié à SiteMapDataSource (hiérarchique).HierarchicalDataBoundControl.PerformDataBinding n'étant pas appelé en publication

Je remplace PerformDataBinding pour récupérer les données de la source de données.

Tout fonctionne très bien lors du chargement de la page. Mais lorsque j'effectue un postback n'importe où sur la page, la méthode PerformDataBinding n'est pas appelée et, en fait, ne restitue aucun élément de menu (PerformDataBinding n'a pas été appelé).

Répondre

3

Aucune idée pourquoi cela se produit, mais j'ai une solution pour cela. Étonnamment, chaque exemple d'un HierarchicalDataBoundControl que je pourrais trouver (même de msdn) faisait ceci. Cependant, voici une solution de contournement.

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(); }; 
     } 
    }