dポイントプレゼントキャンペーン実施中!

ASP.netにて、ドロップダウンリストの選択に応じて、
処理を分岐させるプログラムを書いています。

現在、エラーになっているのですが、
下記のコードです。

-----------------------------------

<%@ Page Title="ホーム ページ" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">

<p><strong>【検索条件】</strong></p>
<div style="border:#d2d2d2 solid 1px;">
<p style="margin-left: 30px;">
<asp:DropDownList ID="ddlPref" runat="server">
</asp:DropDownList>
<asp:DropDownList ID="ddlNumOfPeople" runat="server">
</asp:DropDownList>
</p>
<p style="margin-left: 30px;">
<asp:DropDownList ID="ddlLayout" runat="server">
</asp:DropDownList>
<asp:DropDownList ID="ddlPrice" runat="server">
</asp:DropDownList>
</p></div>
<p>
</p>
<p>
<asp:Button ID="btnSearch" runat="server" Text="検索" Width="90px"
OnClientClick="javascript:DDLEnabled()" />
</p>
<script language="javascript" type="text/javascript">
function DDLEnabled() {
var srtMsg = '';

var Pref = document.getElementById("MainContent_ddlPref");
var PrefValue = Pref.options[Pref.selectedIndex].value;
var NumOfPeople = document.getElementById("MainContent_ddlNumOfPeople");
var NOPValue = NumOfPeople.options[NumOfPeople.selectedIndex].value;
var Layout = document.getElementById("MainContent_ddlLayout");
var LayoutValue = Layout.options[Layout.selectedIndex].value;
var Price = document.getElementById("MainContent_ddlPrice");
var PriceValue = Price.options[Price.selectedIndex].value;


if (PrefValue == "0") { srtMsg = "都道府県を選択してください。\n"; }
if (NOPValue == "0") { srtMsg = srtMsg + "人数を選択してください。\n"; }
if (LayoutValue == "0") { srtMsg = srtMsg + "レイアウトを選択してください。\n"; }
if (PriceValue == "0") { srtMsg = srtMsg + "料金を選択してください。\n"; }
if (srtMsg != '') { alert(srtMsg) }


if (PrefValue !== "0" && NOPValue !== "0" && LayoutValue !== "0" && PriceValue !== "0")
{
//ここで、検索の実行がされるようにしたい。。。
}
}
</script>
<p>
</p>
</asp:Content>
----------------------------------

上記コードにて、ボタン(btnSearch)が押下された時、

ドロップダウンリストが、
(1):全て選択されているとき ⇒ 次の画面へ
(2):未選択のものがあるとき ⇒ javascriptのポップ・アップ表示 をしたいと考えています。

#未選択、選択の判断はvalueの値がデフォルト値 "0"なので、0を未選択、0以外を選択済み
というように判断しています。

現在、ポップ・アップの表示は問題なくできているのですが、
全て選択されている時の処理(ボタンの押下、実行)ができていません。

どなたかご存知の方がいたらおしえてください。
宜しくお願い致します。

A 回答 (2件)

横から失礼します。



コード例を拝見していると、クライアントサイドの検証が先ずあって、それを通った結果、ポストバックを敢行したい、というような雰囲気になっています。

ASP.NET最大の売りというのは、ポストバックとビューステートであり、これを使って簡単にサーバサイドで検証(バリデーション)が行え、また、クライアント検証も(ある程度は)自動生成できる、ということだと思います。

最近はAjax処理などが流行で、以前ほどの「ポストバック」->「サーバサイド検証」(「ついでにクライアント検証もそこそこ」)という流れでもないのかもしれませんが、ひょっとしてそういうことを意識してない、phpみたいな検証方法をお考えですか?

ならば、すぐ改めるべきだと思います。
こんなベタな検証ルーチンはASP.NET(特にWebフォーム)では必要ありません。
ValidationControlを使って、サーバ・クライアントとも自動実行しましょう。
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます。javascriptからボタンの実行をさせることでかいけつしましたが、仰られているようにクライアントサイドの検証を試みはASP.netにそぐわないようですね。。

お礼日時:2013/01/23 23:56

> //ここで、検索の実行がされるようにしたい。

。。

「検索の実行」というはポストバックしてサーバー側で行うのですか?

「(1):全て選択されているとき」は処置は期待通りそこ(上のコメント)まで飛んでくるのであれば、そこに form を submit するスクリプトを書けばよさそうですが。
    • good
    • 0
この回答へのお礼

おかげさまで無事解決しました。ありがとうございます。

お礼日時:2013/01/23 23:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!