質問

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

  1. ドロップダウンからグリッド1を選択します
  2. 新しい行の追加]をクリックしますが、新しい行をキャンセルしないでください(新しい行を開いたままにします)
  3. ドロップダウンからgrid2を選択し、グリッドの負荷を挙げます
  4. 再びドロップダウンからGRID1を選択します

この時点で、GRID1が開きますが、JavaScriptエラーに従って取得されます。

Microsoft jscriptランタイムエラー:sys.webforms.pagerequestmanagerservererrorexception:ViewStateのロードに失敗しました。 ViewStateがロードされているコントロールツリーは、前のリクエスト中にViewStateを保存するために使用されたコントロールツリーと一致する必要があります。たとえば、コントロールを動的に追加する場合、ポストバック中に追加されたコントロールは、最初のリクエスト中に追加されたコントロールのタイプと位置と一致する必要があります。

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

役に立ちましたか?

解決 3

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

radgrid1.controls.clear(); radgrid2.controls.clear();

他のヒント

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

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.

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

たぶん、あなたのコードの一部を表示するのに役立つでしょう。

詳細情報がなければ、コントロールはポストバックの後にもうページ上にないようです。 Radグリッドを削除していますか、それとも必要なときに見えるようにしていますか?また、動的に追加することもできます。これは、ラジグリッドに問題を引き起こす可能性があります。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top