2009-03-23 8 views
0

J'utilise DotNetNuke 4.9.2 et je suis confronté à un problème étrange.DotNetNuke ObjectDataSource.SelectMethod n'est pas enregistré dans viewstate

J'ai un MultiView dans le module que je suis en train de développer, et dans une des vues j'ai un GridView qui est lié à un ObjectDataSource.

Dans une vue séparée, j'ai plusieurs boutons qui permuteront le SelectMethod de ObjectDataSource dans la 2ème vue, puis activeront cette vue. Tout fonctionne bien, jusqu'à ce que la grille soit triée sur la deuxième vue - ce qui provoque une publication et l'ODS récupère en quelque sorte son SelectMethod original. Les SelectParameters qui sont assignés en même temps dans le stick code-behind.

Il me semble que ObjectDataSource devrait se souvenir du SelectMethod dans viewstate, n'est-ce 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); 
} 

Lorsque j'exécute ce bouton, la grille s'affiche comme prévu. Lorsque je clique sur l'un des en-têtes de colonne pour le GridView et casse le chargement de la page pour inspecter le SelectMethod, il est revenu à celui déclaré dans le balisage.

Des suggestions sur ce que mon problème pourrait être ici?

+0

Je ne suis pas trop familier avec le MultiView ... est l'ObjectDataSource dans l'une des vues? Le problème persiste-t-il si vous supprimez complètement le MultiView de l'équation? – Bryan

+0

J'ai essayé de déplacer l'ODS en dehors du multiview - toujours pas de chance. Cela a fonctionné très bien pour moi dans le passé dans asp.net standard - donc je devine que quelque chose dans le nucléaire est interférant. –

Répondre

0

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 pourquoi cette hélice SelectMethod ne colle pas sur une publication dans nuke. Je suis sûr que cela a fonctionné très bien pour moi dans les projets directement asp.net dans le passé ...

0

Je suppose que vous avez vérifié que vous ne réinitialisez pas .SelectMethod lorsque la page est rechargée?

+0

oui - j'ai passé au peigne fin chaque ligne de code au moins une douzaine de fois. Frustrant. –