2009-03-23 15 views
0

私はDotNetNuke 4.9.2を使用していますが、奇妙な問題が発生しています。DotNetNuke ObjectDataSource.SelectMethodがビューステートに保存されていません

私は開発しているモジュールにMultiViewを持っており、ビューの1つにObjectDataSourceにバインドされているGridViewがあります。

別のビューでは、2番目のビューでObjectDataSourceのSelectMethodを切り替えて、そのビューをアクティブにするボタンがいくつかあります。 2番目のビューでグリッドがソートされ、ポストバックが発生し、ODSが元のSelectMethodをピックアップするまで、すべて正常に動作します。コードビハインドで同時に割り当てられるSelectParameters。

ObjectDataSourceがviewstateのSelectMethodを覚えているはずですね。そうではありませんか?

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

このボタンをクリックすると、グリッドが期待通りに表示されます。 GridViewの列ヘッダーの1つをクリックし、SelectMethodを検査するためにページの読み込みを中断すると、マークアップで宣言されたものに戻りました。

私の問題が何であるかについてのご意見はありますか?

+0

私はあまりにもMultiViewに精通していない...ビューの1つの中のObjectDataSourceですか?方程式の中からMultiViewを取り除くと、まだ問題は起こりますか? – Bryan

+0

私はマルチビューの外でODSを動かしてみました - まだ運がありません。これは、標準asp.netでこれまで私にとってうまくいきました。つまり、核の中の何かが干渉していると推測しています。 –

答えて

0

そのSelectMethodプロップがつかない、なぜ私は...ちょうどselectmethodを保持するためにページのプロパティを使用して、その後、各ポストバックでそれをリセットすることで問題を回避作業それでも

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

ないことを確認してしまいました核のポストバックで。私はこれが正常に過去のasp.netのプロジェクトで私のために正常に働いていると確信しています...

0

ページがリロードされたときにリセット方法を選択していないと思いますか?

+0

はい - 私はコードのすべての行を少なくとも12回梳きました。挫折。 –

関連する問題