0

マスター ページにはコンテンツ プレース ホルダーがあり、ページには別々の asp:panel 内に 2 つの rad グリッドがあります。ドロップダウン選択で、それぞれのグリッドがページにロードされます。

  1. ドロップダウンからグリッド 1 を選択します
  2. [新しい行の追加] をクリックしますが、新しい行をキャンセルまたは追加しないでください (新しい行を開いたままにしておきます)。
  3. ドロップダウンから grid2 を選択し、グリッドをロードします
  4. 再度、ドロップダウンから grid1 を選択します

この時点で grid1 が開きますが、次の JavaScript エラーが発生します。

Microsoft JScript ランタイム エラー: Sys.WebForms.PageRequestManagerServerErrorException: ビューステートの読み込みに失敗しました。ビューステートが読み込まれるコントロール ツリーは、前の要求でビューステートを保存するために使用されたコントロール ツリーと一致する必要があります。たとえば、コントロールを動的に追加する場合、ポストバック中に追加されたコントロールは、最初のリクエスト中に追加されたコントロールのタイプと位置と一致する必要があります。

問題に関する任意のアイデア。いくつかのフォーラムで、単一のコンテンツ プレース ホルダーで同じタイプのコントロールを使用して、問題が発生する可能性があることを読みました。解決策に関する提案はありますか???

4

3 に答える 3

1

同じコンテンツ プレース ホルダー内の同じ種類のコントロールは問題ではありません。

Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request.

これは、コントロールを動的に追加および削除しているときに最も頻繁に発生します。可視性を変更するだけでエラーになることはありません。

コードの一部を表示すると役立つ場合があります。

于 2012-01-17T08:18:57.050 に答える
0

再バインドする前に、ドロップダウン選択の変更時に両方のグリッドのコントロールをクリアしました。それは私の問題を解決しました。

radgrid1.Controls.Clear(); radgrid2.Controls.Clear();

于 2012-01-19T09:49:53.897 に答える
0

詳細情報がないと、ポストバック後にコントロールがページに表示されなくなったようです。Rad グリッドを削除していますか、それとも必要なときに表示するだけですか? それらを動的に追加することもできます。これにより、radgrids で問題が発生する可能性があると思います。

最善の解決策は、ユーザーが新しい選択を行ったときに One grid を使用して操作することだと思います。グリッドが互いに大きく異なる場合は、複数を追加して、リストから選択したときにそれらを表示します (3 つ以上のオプションがある場合はこれを行わないでください)。

于 2012-01-17T08:01:32.230 に答える