Pergunta

Atualmente, estou usando três web parts conectadas (webpart A conectada a B, B conectada a C).O problema está na conexão entre B e C.A Webpart B é um provedor e um consumidor e contém apenas uma caixa de depósito com algumas variáveis.O item selecionado nesta caixa de depósito é o valor fornecido.Este é o provedor de conexão no código que estou usando na webpart B.

[ConnectionProvider("DropboxValue", "dbv")]
public IDropBoxValue provider()
{
     return this;
}

Este é o connectionconsumer que estou usando na webpart C.

[ConnectionConsumer("DropboxValue", "dbv")]
public void consumer(IDropBoxValue providerInterface)
{
     _provider = providerInterface;
}

no primeiro carregamento da página um DropBoxValue é selecionado automaticamente e a webpart C utiliza esta variável para criar um SPGridView com dados.Agora, se eu alterar essa variável selecionando um novo item na webpart da caixa de depósito, C não responderá a ela.Na verdade, se eu executar o projeto em depuração, nada será chamado da webpart C.

Então, por que a Webpart C não responde às alterações na Webpart B?

Edição Extra Sempre que eu mudo o selectedValue na Web Part B, ele muda o texto para "No Provider Web Part Connected". Este erro é criado por mim e é lançado quando

if (_Provider == null)

_Provider é a interface do provedor webpart A.

Foi útil?

Solução

O erro no meu caso está no uso das funções CreateChildControls e OnPreRender.Liguei para o provedor em CreateChildControls enquanto ele deveria ter sido chamado na função OnPreRender.

Se você chamar uma Webpart diferente em CreateChildControls, é possível que os CreateChildControls dessa webpart não tenham sido iniciados.Quando OnPreRender é chamado, todas as funções CreateChildControl de todas as webparts foram chamadas.E assim, no momento em que OnPreRender for chamado, todas as webparts na página atual existirão.

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