Pergunta

Estou usando três webparts.A Webpart A cria um valor quando o usuário clica no botão na Webpart A.A WebPart B usa esse valor para criar uma lista com itens que o usuário pode selecionar.WebPart C usa ambos os valores para criar uma string para fins de teste.

WebPart B usa esta lista para preencher uma caixa suspensa.Sempre que o valor selecionado for alterado ele deverá atualizar a WebPart C.Esta é a declaração do controle.

_documentTypeList = new DropDownList();
_documentTypeList.AutoPostBack = true;
this.Controls.Add(_documentTypeList);

O problema aqui é que usar

_documentTypeList.AutoPostBack = true;

recarrega a página completa e redefine o valor na WebPart A como nulo.Como envio o novo valor da WebPart B para a WebPart C sem perder o valor da WebPart A?Tudo isso acontece em 1 página.

Foi útil?

Solução

salvar variáveis ​​de estado da sessão pode ser feito usando:

    public string Name
    {
        get
        {
            return Page.Session["SaveName"] as string;
        }
        set
        {
            Page.Session["SaveName"] = value;
        }
    }

este é um getter/setter para salvar/obter do estado da sessão

para usar isso faça o seguinte:

isso obtém o valor do estado da sessão (precisa estar no evento onPreRender para ver as variáveis ​​do estado da sessão)

txtName.Text = Name;

isso define o estado da sessão (pode estar em qualquer lugar onde você deseja salvar no estado da sessão)

Name = txtName.Text;

para valor interno:

troca public string Name para public int Name e o mesmo vale para qualquer outra coisa, como valores bool, etc.

então ficaria assim para int:

    public int Name
    {
        get
        {
            return Page.Session["SaveName"] as int;
        }
        set
        {
            Page.Session["SaveName"] = value;
        }
    }

Como outros observaram, para que os dados sejam transmitidos entre webparts, você deve usar o método iInterface:

fornecer (webpart enviando dados) consumidor (webpart usando esses dados) e interface que é a conexão entre as webparts:

o procedimento acima funcionará 100% e salvará seus valores no postback :)

caso você precise disso;) iv postei alguns links nas conexões abaixo.

Problemas conectáveis ​​de WebParts........................?

e

Conexão entre duas web parts

espero que ajude :)

Outras dicas

Você tentou if (!Page.IsPostBack) { your code here } ?

Você já tentou criar uma conexão de web part personalizada para sua finalidade?Analisar sua necessidade pode ser a opção mais apropriada

Anteriormente, as web parts eram conectadas na seguinte ordem.

WebPart A => WebPart B
WebPart B => WebPart C
WebPart A => WebPart C

isso criou um erro se eu quisesse chamar ambos os valores na WebPart C quando alterei o valor na WebPart B.Sempre que o valor da WebPart B era alterado era necessário recarregar a página e, portanto, recarregar a WebPart A.Como a WebPart A tinha um valor criado na interação do usuário e não no carregamento da página, o valor foi perdido.WebPart B e WebPart C apreendidos para funcionar sem o valor de WebPart A.Se você deseja manter a conexão WebPart conforme descrito acima, verifique a resposta do quaseSharePointMaster.

Como no meu caso a WebPart A cria um token de login exclusivo, prefiro não salvá-lo na página.Eu prefiro mantê-lo dentro dos WebParts.Para fazer isso mudei a conexão entre eles.Em vez da conexão acima, usei a seguinte conexão.

WebPart A => WebPart B => WebPart C

A WebPart B salva o valor da WebPart A e o fornece junto com seu próprio valor para a WebPart C.Esta é a aparência atual da interface WebParts B.

public interface IWebPartB
{
    string webPartAValue { get; }
    string webPartBValue { get; }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top