Question

J'utilise DotNetNuke 4.9.2 et je suis en cours d'exécution dans un problème étrange.

J'ai un MultiView dans le module que je développe, et dans l'un des points de vue ont une GridView qui est lié à un ObjectDataSource.

Dans une vue séparée, j'ai plusieurs boutons qui basculeront le SelectMethod du ObjectDataSource dans la 2ème vue puis définissez ce point de vue actif. Que tout fonctionne très bien, jusqu'à ce que la grille est triée sur la 2ème vue - ce qui provoque une postback et l'ODS reprend en quelque sorte son SelectMethod d'origine. Les SelectParameters qui sont affectés en même temps dans le code-behind bâton bien.

me semble que le ObjectDataSource devrait être le rappeler SelectMethod dans viewstate, il ne devrait pas?

<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);
}

Quand je lance ce bouton clic, la grille affiche comme prévu. Lorsque je clique sur l'un des en-têtes de colonne pour la GridView et rupture de la charge de la page pour inspecter le SelectMethod, il est revenu à celui déclaré dans le balisage.

Toutes les suggestions quant à ce que mon problème pourrait être ici?

Était-ce utile?

La solution 2

J'ai fini par travailler sur la question en utilisant simplement une propriété de page pour tenir le SelectMethod, puis le remettre à zéro sur chaque 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";
}

Toujours pas sûr pourquoi cette hélice SelectMethod ne colle pas sur un postback Nuke. Je suis sûr que cela a bien fonctionné pour moi dans les projets asp.net droits dans le passé ...

Autres conseils

Je suppose que vous êtes sûr que vous n'êtes pas remise à zéro .SelectMethod quand la page se recharge?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top