質問

asp.netアプリケーションでマスターページと子ページを使用しています。マスターページにドロップダウンリストとtreeview(sitemapdatasourceを使用)があります。ツリービューノードのいずれかをクリックすると、ページが子ページにリダイレクトされます。問題は、ドロップdwnリストで値を選択してツリービューノードをクリックすると、選択した値が子ページのextボックスに割り当てられる必要があることです。これは機能しません。 マスターpage_load()は子page_load()の後に実行されていますが、これはそのためですか?

これで私を助けてください。

ありがとう ルパ

役に立ちましたか?

解決

マスターページを直接表示することはできないため、共通のマスターページを使用する2つのページがあると仮定しています。また、このマスターページにはドロップダウンリストとツリービューサイトマップが表示されると想定しています。

これに基づいて、主に起こっているのは、ツリービューがプレーンな古いhtmlリンクをレンダリングしていることだと思います(つまり<a href='http://stackoverflow.com'>...)。これらがクリックされると、ブラウザは2番目の子ページのgetリクエストを実行します。デフォルトでは、最初の子ページのデータは2番目のページに渡されません。

この動作を変更するにはさまざまな方法があります。最初に、AutoPostBackプロパティをtrueに設定し、ドロップダウンリストのSelectedIndexChangedイベントを処理する必要があります。その場合、後で復元できるようにドロップダウンの値を保存できます。

この値を保存する最も簡単な方法は、おそらくセッションに入れることです。

Session["myvar"] = dropdown.SelectedIndex;

次のような方法で、子ページが読み込まれたときにマスターページでこの値を復元できます。

if (!IsPostBack && Session["myvar"] != null) 
    dropdown.SelectedIndex = (int)Session["myvar"];

別のオプションは、ツリービューの各URLのクエリ文字列に値を追加することです。

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