2

ユーザーが表示したい特定のコントロールを選択して、好きなように配置できるいくつかのRadDocksを備えたホームページを持つWebサイトを開発しています。

追加/移動/削除 (コントロール ツリーが変更された) のときに多くのビューステート エラーが発生しました。唯一の解決策は、いくつかのテレリック コントロール (RadDock、RadDockLayout、RadDockZone など) のラッパー クラスを作成し、[ViewStateModeById] 属性を適用することです。

[ViewStateModeById]
public class RadDockById : RadDock

ViewStateModeById と組み合わせて RadDock を使用した人はいますか? 将来的に問題を引き起こす可能性はありますか?

4

1 に答える 1

2

発生したViewState関連の問題は、おそらく次の2つの原因が原因です。

  1. 動的に作成されたRadDockは、同じコントロールに追加されません。それらがRadDockZoneに追加されたら、それ以外の場合はRadDockLayoutに追加されます。これにより、一部のドックに誤ったViewStateがロードされ、問題が発生します。
  2. 閉じたドックは廃棄され、ページから削除されます。これにより、ページのコントロールツリーが再び変更されます。これは、ViewStateをロードおよび保存するときに不可欠です。

自分の側で問題を解決するには、次のオプションがあります。

  • RadDockLayoutまたはページ全体のViewStateを無効にします。このようにしてコントロールを追加または削除できますが、プロパティが動的に変更されると、いくつかの問題が発生する可能性があります。
  • ご想像のとおり、RadDockコントロールから継承する新しいクラスを作成し、ViewStateModeByIdを使用するようにマークを付けます。このフォーラムスレッドではこのアプローチに関する詳細情報を見つけることができます。
  • 常にすべてのドックを作成し、それらをRadDockLayoutに追加します。閉じたRadDocksでは、常にVisibleプロパティをfalseに設定する必要があります。
于 2012-01-16T17:27:23.763 に答える