Pergunta

Eu escrevi uma lista personalizada no SharePoint, com o método onprender preenchendo a lista por meio de um serviço da web. A lista precisa se manter atualizada toda vez que for renderizada. Quando a lista é visualizada através das listas-> MyList, o allitems.aspx é chamado e meu código por trás (uma página da web) é chamado e a lista é atualizada.

Mas se eu incorporar a lista na primeira página ou em qualquer outro lugar, meu código por trás não será chamado. Ele mostra os dados da lista existente. O que estou fazendo errado?

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.
    }
}

Nenhuma solução correta

Outras dicas

Supondo que você esteja abandonando a lista na página inicial (página frontal), sugiro escrever um WebPart e não uma página da web. Porque quando você solta uma lista na página inicial, está colocando indiretamente o ListViewWebPart, não a página. Portanto, é óbvio que seu código não é chamado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top