ASP.Netのメニュークリック時の処理方法

このQ&Aのポイント
  • ASP.Netのメニュークリック時に処理を行う方法について解説します。
  • MenuItemClickイベントでは、URLを開いた後に処理されるため、メニュー項目のクリック時の処理を行うことができません。代替案として、Sessionに値を入れる方法があります。
  • メニューコントロールを配置し、特定の項目をクリックすると指定したページが開くようになっていますが、開いた後の処理を実行するためには他の方法を検討する必要があります。
回答を見る
  • ベストアンサー

ASP.Net メニュークリックした時に処理を!

お世話になります。 ページにメニューコントロールを配置しております。 メニューの特定項目をクリックすると、NavigateURL に指定してあるページが開くようにしてあるのですが、項目をクリック ----から---- 指定ページの Load時の前に、どの項目押されて、それに伴う処理をしたいのですが、MenuItemClick イベントでは、URLを開いた後に処理されるので、間に合いません。 e.Item.Text でどの項目が押されたかも、開いた後なので、間に合いません。 最悪 Session に値を入れるだけでも良いのですが、何か良い方法などはないでしょうか? 何卒よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • onos
  • ベストアンサー率81% (127/155)
回答No.1

通常はメニューの項目別に開くページを用意するものだと思ってます。 もしかして複数の項目で同じページを開くようになっていて、そこで元の押された項目を判断したい、ということなのでしょうか? メニューのNavigateURLの中にクエリ文字列を含めることはできませんかね? 項目別にクエリ文字列を変えておけば、遷移先のページでクエリ文字列で何をうけとったかで、どの項目が押されたのか判断できると思います。

kyokotan12
質問者

お礼

onosさん お世話になります。 メニューの NavigateURL を指定した後に、続けて クエリ文字列を加える事ができました。Load時に Request.QueryString で取り出す事ができました。 ありがとうございました。

kyokotan12
質問者

補足

onosさん 大変お世話になります。 いつも適格なアドバイスありがとうございます。 メニューのNavigateURL にクエリ文字列を含める事でできるんでしょうか? メニュー項目の編集 → NavigateURL を選択してページを選択することしかできないみたいですが。 思い切って NavigateURL には何も指定せずに、Menu_MenuItemClick で全て実行する感じでやればいけますでしょうか? 

関連するQ&A

  • オプションメニュー・クリックした時の処理

    "wordlist"という名前のオプションメニューを作りました。クリックしてdo/selection.cgiを呼び出して送信を受けたデータ(クリックしたアイテムの番号)を読んで処理を行わせようと考えています。 <form name="resultform" action="do_selection.cgi"> --- --- <select name="wordlist" type=submit> <option selected>訳語検索の結果</option> for ($i=1; $i<$#midashi; $i++) {print "<option value=\"$midashi[$i]\">$midashi[$i]"; } </select> </form> ところが、これではdo_selection.cgiが呼び出されませんでした。またsubmit はメニューでクリックしたアイテムの番号をどのようにして送り出すのかも分かりません。tohohoさんのページを見ておりますが、見つかりませんでした。どなたかアドバイスをいただきたいのですが。。。(もし私の質問に不明の箇所がありましたら、補足をいたしますのでご指摘下さい]

    • ベストアンサー
    • Perl
  • クリックでメニューを表示

    初心者で申し訳ないのですがお答えいただけたらと思います。 親メニューに当たる画像orテキストをクリックして 指定箇所に子メニューを表示させ、 その子メニューをクリックしてリンクさせたいと思っているのですが JavaScriptでできるのかどうか、 もしできるのであればどう組めばいいのか よろしくお願いします。 形的には、 http://www.ozaki-gasrange.co.jp/cso_q1-3.html ↑ページのような感じで、 マウスを置いた時ではなく、クリックして 下にメニューを表示させて さらにそのメニューをクリックして右枠にページを 表示させたいと思います。 どうぞよろしくお願いします。

  • ASP.NETのメニューコントロール

    開発環境 ・Windows XP ・Framework4.0 ・VB.NET マスターページに横長のメニューコントロールを配置したアプリを作成しています。 javascriptでアラートメッセージを表示すると、 メニューコントロールが領域いっぱいに広がってレイアウトが崩れてしまいます。 回避策があれば、ご回答お願いします。

  • リンクを右クリックした時のメニュー

    ホームページ上のサイトにて、 リンクを右クリックしたときに出てくるメニューに 項目を追加したいと思っています。 処理内容は、単純に言うと「右クリックした時のリンク先のファイルを保存」するだけです。 JavaScriptで出来るらしいと聞いたのですがやり方がわかりません。 教えてもらえないでしょうか?

  • ASP.NET 動的に行を増やすTable

    ASP.NET(VB)アプリケーションでボタンが押される度に、 行を追加するTableを作りたいです。 初期表示時にPage_Initで5行のtableを作成するようにしています。 ボタンクリックイベントで行数を増やしていくのですが、 他のコントロール(asp.textbox)のテキストチェンジイベントでPostBackが発生すると、 元の5行に戻ってしまいます。 Page_Initで5行と指定しているためなので、 ここの指定数をPostBack前に保持した行数にすれば良いと思ったのですが、 もっと他にスマートな方法はありませんでしょうか? もし、保持する方法をとる場合は、セッションなどで保持するべきでしょうか?

  • エディットボックスの処理で画面がちらつきます。

    VC++ 6.0 Win32APIにてダイアログベースのプログラムを作成しております。 ダイアログに18個のエディットボックスを配置しておりますが、そのエディットボックスのテキストを SetDlgItemText()を使って全て空欄にすると(第3引数に””を指定)画面がちらつきます。 同ダイアログ内のリストコントロールがダブルクリックされた際のイベントを拾ってエディットボックスクリアの処理を実行しているのですが、ちらつきを抑える手法はありますでしょうか?

  • 右クリックメニューの編集

    エクスプローラーで右クリックメニューの「新規作成」のサブに新たな項目を追加したいのではなく、 右クリックメニューの直下に「新規フォルダ作成」「新規テキスト作成」などを 追加するのはレジストリを編集すればできるでしょうか?

  • ASP.Net FormViewでの削除について

    大変お世話になっております。 FormView を セッション変数にて該当するデータを表示するようにしております。 そのFormView に削除ボタンを作成して、ボタンのクリックイベントにて下記のようなプログラムを記述しております。     FormView1.DeleteItem()     Session("Number") = ""     Response.Write("<script language='javascript'> { window.close();}</script>") 上記を実行すると削除処理はされ、セッションもクリアされるのですが、その後、そのページを閉じたいのですが、3行目が無視されて、LoadイベントやDataBoundイベントに移ってしまいます。 DeleteItemメソッドでカレントデータを削除してその画面を閉じるには、どうすれば良いのでしょうか? 何か思い違いをしている個所や、ご指摘などございましたら何卒ご教授いただければと存じます。 よろしくお願いいたします。

  • スタートメニューにある項目を右クリックしても何も出てこない

    スタートメニューに「マイコンピュータ」や「マイネットワーク」や「コントロールパネル」などの項目がありますが、 以前はその項目上で右クリックすればサブメニューが出てきたのに何も出てこなくなりました。 デバイスマネージャーなどはいつもマイコンピュータ→右クリックから開いていたので、 これができなくなるとかなり不便なのですがどうすれば元に戻るのでしょうか?

  • コンテキストメニューアイテムの右クリック左クリック

    よろしくお願いします。環境はVB2008です。 フォーム上にコンテキストメニューを配置し、右クリックで表示します。 そのあとにアイテムをクリックすると別のフォームが開くようにしてるのですが、右クリックでも左クリックでも同様にフォームが開いてしまいます。これを左クリックされたときのみ別のフォームを表示するようにするにはどのようにすれば宜しいでしょうか。ぜひご教授願います。

専門家に質問してみよう