- - PR -
[ASP.net]DropDownListの値を取得して確認メッセージを出力したい
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-11-15 11:26
お世話になります。
以下のDropDownListがあります。 ・期間(From)(年) DropDownListFromY ・期間(From)(月) DropDownListFromM ・期間(From)(日) DropDownListFromD ・期間(To)(年) DropDownListToY ・期間(To)(月) DropDownListToM ・期間(To)(日) DropDownListToD [実行]ボタン押下により以下の処理を実行したい 1.年月日の整合性(2006年02月31日とかになっていないか) NGの場合エラーメッセージ 2.期間の整合性チェック(From(年月日) < To(年月日)になっているか) NGの場合エラーメッセージ 3.上記2つがOKならば確認メッセージを出力("2006/01/01 〜 2006/02/01 でよろしいですか?") 4.「3.」で[OK]ボタン押下時に次のページへ遷移したい(Response.Redirect("NextPage.aspx")) 確認メッセージを出すだけならば ButtonJikkou.Attributes("OnClick") = "return confirm('よろしいですか?')" で実現できるのですが、選択されているDorpDownListの値を取得してメッセージを出力するという方法がわかりません。 JavaScriptで DropDownListFromY.selectedIndex 等で値を取得して強引にやろうともしたのですがうまくいきませんでした。 どなたか御教授願います。 宜しくお願いします。 | ||||
|
投稿日時: 2006-11-15 12:11
ブラウザによって違うかもしれないし大文字小文字あってるかわからないけど
DropDownListFromY.options[1].text じゃないかね。表示されてる文字列を出すなら。 1と2は実装済み?(.NET2.0ならDateTime.TryParse使うかな〜) 1と2をサーバでやるんなら3もサーバで作っちゃったほうがいいでしょうね。 [追記] ぁ、サーバコードから確認ダイアログ出すようにするにはRegisterStartupScriptを 使うことになると思います。 [ メッセージ編集済み 編集者: べる 編集日時 2006-11-15 12:24 ] | ||||
|
投稿日時: 2006-11-15 12:54
サーバサイドとクライアントサイドのどちらで何をやろうとしているのか判断しにくいですね。
JavaScript で判断するなら、ココなんかが役に立つかも。 値を取得するなら「value」、表示文字列を取得するならべるさんのおっしゃる通り「text」ですね。 | ||||
|
投稿日時: 2006-11-15 13:41
御回答ありがとうございます。
「1.」〜「3.」はクライアントで処理を行おうと思います。 単純にHTMLを作成し、教えていただいた「options[1].text 」や「options[1].value」で 値を取得する事はできましたが、aspx上でうまく動かない状況です。 出力されたHTMLをみると以下のように「name」が変わっていたり、 <select name="_ctl0:ContentPlaceHolder1:DropDownListFromY" id="_ctl0_ContentPlaceHolder1_DropDownListFromY"> MasterPageを使っているのでそれが悪影響を与えているのか? 等いろいろと不明な要素が多くあるので、もう少し試行錯誤して状況を整理してまた質問させてもらおうと思います。 | ||||
|
投稿日時: 2006-11-15 14:00
> MasterPageを使っているのでそれが悪影響を与えているのか?
「悪影響」ですか。。。 ASP.NET側がサーバとブラウザ間でうまく整合性をとるための仕組みだと 思いますけど。 で、まずASP.NETを作ってそこから生成されるHTMLにあわせてクライアント側の JavaScriptを作成するのがてっとりばやいと思います。 | ||||
|
投稿日時: 2006-11-16 08:24
私ならDropDownListの代わりにCalendarコントロールを利用しますけどね! この場合、開始日、終了日の範囲のチェックも含めてすべて検証コントロール で可能です。 ポップアップカレンダーから日付を選択させる http://akiokasai.qsh.eu/Goto.aspx?id=atlas/060331-1 ドロップダウンカレンダーから日付を選択させる http://akiokasai.qsh.eu/Goto.aspx?id=060621-3 _________________ ASP.NET+Ajaxサンプル集 [ メッセージ編集済み 編集者: Access 編集日時 2006-11-16 09:07 ] | ||||
|
投稿日時: 2006-11-16 23:28
こんばんは、THREE-ONEです。
こんな形なら、id・name 関係なく取れるのではないでしょうか? | ||||
|
投稿日時: 2006-11-17 09:40
みなさんありがとうございます。
なんとかやりたいことができそうです。 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> ↓aspx上のコントロールのID _________________ _ctl0_ContentPlaceHolder1_DropDownListFromY ~~~~~~~~~~~~~~~~~~~ ↑MasterPageのコンテンツ部のID 最初の"_ctl0"の意味は分かりませんが、MasterPage使用すると付与される決まり(?)なんですかね・・・ みなさんのおかげでこの方法以外にもいろいろな実現方法があり勉強になりました。 ありがとうございます。 |