- - PR -
[ASP.net]DropDownListの値を取得して確認メッセージを出力したい
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-11-17 09:42
スペースを使ったらうまく表示されなかったのでもう一度失礼します。
みなさんありがとうございます。 なんとかやりたいことができそうです。 aspx上では↓のようにコーディングしているのですが、 <asp:DropDownList ID="DropDownListFromY" runat="server"></asp:DropDownList> 出力されたHTMLでは↓のように出力されています。 <select name="_ctl0:ContentPlaceHolder1:DropDownListFromY" id="_ctl0_ContentPlaceHolder1_DropDownListFromY"> </select> やはりこれが原因でした。 ↓のJavaScriptで値も無事取得する事ができました。 document.all("_ctl0_ContentPlaceHolder1_DropDownListFromY").value; MasterPageを使用するとIDが変わってしまうんですね。 ↓MasterPageのコンテンツ部 <asp:contentplaceholder id="ContentPlaceHolder1" runat="server"> </asp:contentplaceholder> _ctl0_ContentPlaceHolder1_DropDownListFromY _ctl0・・・・・・・・・・・・・・・・・・・・??? _ContentPlaceHolder1・・・・・MasterPageのコンテンツ部のID _DropDownListFromY・・・・・・・aspx上のコントロールのID 最初の"_ctl0"の意味は分かりませんが、MasterPage使用すると付与される決まり(?)なんですかね・・・ みなさんのおかげでこの方法以外にもいろいろな実現方法があり勉強になりました。 ありがとうございます。 | ||||||||
|
投稿日時: 2006-11-17 14:52
> 最初の"_ctl0"の意味は分かりませんが、MasterPage使用すると付与される決まり(?)なんですかね・・・
決まりだと思います。 そういえばどこかでMasterPageというのはユーザコントロールの特殊なもの、という 記述を見たことがあります。 ページ内のコントロールツリーの最初(0番目)のコントロールとしてMasterPageが 登録されるためにつくのかなぁ。 | ||||||||
|
投稿日時: 2006-11-17 19:30
多分マスタページ内に直接配置したコントロールと同じIDを、
コンテンツプレースホルダ内で使用されたときにかぶらないようにするためではないでしょうか。 なので、aspx内にスクリプトを書くとき、 document.getElementById('DropDownListFromY')と書くのではなく、 document.getElementById('<%=DropDownListFromY.ClientID%>')と書く必要があります。 ただ、別のファイルにスクリプトを記述する場合は使えないので、 そういうときは一度動かして実際のIDを調べてそれを書くしかないのかな? | ||||||||
|
投稿日時: 2006-11-20 09:38
>ページ内のコントロールツリーの最初(0番目)のコントロールとしてMasterPageが
登録されるためにつくのかなぁ。 MasterPage内に「ContentPlaceHolder」を2つ作ってみました。 (それぞれに「DropDownListFromY」と「DropDownListToY」を作成) _ctl0_ContentPlaceHolder1_・・・・ _ctl1_ContentPlaceHolder2_・・・・ 上記のように「_ctl1」になるのかと思ったら、下記のように先頭は「_ctl0」でした。 _ctl0_ContentPlaceHolder1_DropDownListFromY _ctl0_ContentPlaceHolder2_DropDownListToY "_ctl0"固定のようです。 >document.getElementById('<%=DropDownListFromY.ClientID%>')と書く必要があります。 あ、こちらのほうがスマートですね。ありがとうございます。 でも、別ファイルにてスクリプトを記述するので、実際に出力されたHTMLのIDを書くことになりそうです。 ありがとうございます。 | ||||||||
|
投稿日時: 2006-11-20 10:30
こんにちは。
スクリプトは別ファイル…ということだと、結局実際に出力された ID を調べる方法になり ますが、その場合に「意図しない理由」で ID が変更されてしまうことも考慮しないとい けないですね(もちろん、そこまで考えてのことだと思いますが)。 個人的には、ID 『だけ』は aspx ファイルの方で渡してやる方法にしちゃうかもしれませ ん。
みたいな感じで。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||
|
投稿日時: 2006-11-20 10:55
>スクリプトは別ファイル…ということだと、結局実際に出力された ID を調べる方法になり
ますが、その場合に「意図しない理由」で ID が変更されてしまうことも考慮しないとい けないですね(もちろん、そこまで考えてのことだと思いますが)。 ありがとうございます。たしかに「「意図しない理由」で ID が変更されてしまうことも」が怖かったので、 今はぽぴ王子さんのおっしゃるようなやり方で実装しようとしています。 (IDではなく値を渡している(チェックルーチンだけ別ファイルという形)) |