2010-03-02 11 views
0

J'ai écrit une liste personnalisée dans sharepoint, avec la méthode onPreRender remplissant la liste via un webservice. La liste doit rester à jour chaque fois qu'elle est rendue. Lorsque la liste est affichée via les listes-> MyList, le allitems.aspx est appelé et mon code derrière (un WebPartPage) est appelé et la liste est mise à jour. Mais si j'inclus la liste sur la première page ou ailleurs, mon code derrière ne sera pas appelé. Il montre les données de liste existantes. Qu'est-ce que je fais mal?Sharepoint Custom List code-behind non invoqué sur une page intégrée

public class GetList: WebPartPage 
{ 

    protected override void OnPreRender(EventArgs e) 
    { 
     InvokeRefreshList(); 
     base.OnPreRender(e); 

    } 
    private void InvokeRefreshList() 
    { 
     SPList myList = null; 
     SPWeb _web; 
     _web = SPControl.GetContextWeb(Context); 
     _webURL = _web.Url; 
     myList = SPContext.Current.List; 
     listTitle = myList .Title; 
     SPSecurity.CodeToRunElevated elevatedRefreshList = 
      new SPSecurity.CodeToRunElevated(RefreshList); 

     SPSecurity.RunWithElevatedPrivileges(elevatedRefreshList); 

    } 
    private RefreshList(){ 
     //webservice code. 
    } 
} 

Répondre

0

En supposant que vous laissez tomber la liste dans la page d'accueil (première page), je vous suggère d'écrire un webpart pas WebPartPage. Parce que lorsque vous déposez une liste dans la page d'accueil, vous placez indirectement le ListViewWebPart, pas la page. Il est donc évident que votre code n'est pas appelé.

Questions connexes