Pergunta

Eu estou usando DotNetNuke 4.9.2 e estou correndo em um problema estranho.

Eu tenho um MultiView no módulo que estou desenvolvendo, e em uma das vistas tenho um GridView que é vinculado a um ObjectDataSource.

Em uma visão separada, eu tenho vários botões que vai mudar o SelectMethod do ObjectDataSource no 2º vista e, em seguida, definir que ver ativo. Isso tudo funciona bem, até que a grade é classificado na 2nd view - que faz com que uma nova postagem e os ODS de alguma forma, pega seu SelectMethod originais. Os SelectParameters que são atribuídos ao mesmo tempo no código-behind vara embora.

Parece-me que o ObjectDataSource deve ser lembrando o SelectMethod no viewstate, não deve ele?

<asp:ObjectDataSource runat="server" ID="MyObjectDataSource" SelectMethod="MyFirstSelectMethod" TypeName="Whatever"></asp:ObjectDataSource>

protected void Button1_Click(object sender, EventArgs e)
{
    MyObjectDataSource.SelectMethod = "MyNewMethod";
    // more code here to change the parameters as well...
    MyMultiView.SetActiveView(MyView2);
}

Quando eu executar esse clique de botão, a grade exibe como esperado. Quando clico em um dos cabeçalhos de coluna para o GridView e pausa no carregamento da página para inspecionar o SelectMethod, ele foi revertido para a declarada na marcação.

Todas as sugestões quanto ao que o meu problema poderia estar aqui?

Foi útil?

Solução 2

acabei trabalhando em torno da questão usando apenas uma propriedade de página para manter o SelectMethod, e, em seguida, redefini-lo em cada postback ...

protected string MySelectMethod
{
    get
    {
        return (string)ViewState["MySelectMethod"] ?? MySearchResultsDataSource.SelectMethod;
    }
    set
    {
        ViewState["MySelectMethod"] = value;

        MySearchResultsDataSource.SelectMethod = value;

    }
}

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
    {
        MySearchResultsDataSource.SelectMethod = MySelectMethod;
    }
}

protected void MyButton_Click(object sender, EventArgs e)
{
    MySelectMethod = "MyNewMethod";
}

Ainda não sei por que prop SelectMethod não se ater em uma postagem na nuke. Tenho certeza que isso tem funcionado muito bem para mim em projetos asp.net em linha reta no passado ...

Outras dicas

Eu estou supondo que você tenha a certeza de que você não está redefinindo .SelectMethod quando a página recarrega?

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