C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 1つもラジオボタンが選択されてない時にエラーを出す


(過去ログ 46 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■24072 / inTopicNo.1)  1つもラジオボタンが選択されてない時にエラーを出す
  
□投稿者/ ぽっち (42回)-(2008/08/27(Wed) 14:04:22)

分類:[ASP.NET (C#)] 

こんにちは。いつもお世話になっております。

開発環境:Windows XP
使用言語:C#・ASP.NET

今回は、ラジオボタンに関するエラー処理で困っております。

ラジオボタンでどれか1つ選択した後に、「決定」ボタン(kettei-btn)したラジオボタンの値を保持して次の
ページへ遷移させているのですが、

ラジオボタンをどれも選択することなく、「決定」ボタンを押した場合はエラーが出るようにしたいのに、
上手くいかずに困っております。


エラーを出すのに、<asp:ValidationSummary ID="vldSummary" runat="server" ValidationGroup="Default" />を使ってしたいのですが、
Page_Loadの時に、if (this.SelectedRadioNo.Value == "")でやり、その後 選択されてなかった場合は、this.vldSummary.HeaderText = "radioボタンが選択されていません";として、次のページに遷移させる事がなく、エラーメッセージを出したいのです。

しかし、今の方法では、デバックは通るのですが「選択されてない状態」というif文は通るのに、エラーは出ずに、決定ボタンを押したら
そのまま指定した遷移先のページに遷移されてしまいます。


どうすれば、良いのか分からない状態ですので、お手数ですがご教授お願いします。

引用返信 編集キー/
■24126 / inTopicNo.2)  Re[1]: 1つもラジオボタンが選択されてない時にエラーを出す
□投稿者/ 純@WAS (12回)-(2008/08/28(Thu) 09:56:43)
的外れだったらスイマセン

決定ボタンクリックイベント( private void kettei-btnClick(object sender,EventArgs e))の部分に
以下のコードを挿入すれば行けるかと思います。(未検証なので責任は取れませんが)

------
//ラジオボタンの要素数だけループをまわす
for(int i = 0 ; i < SelectedRadioNo.Items.Count ; i ++)
{
   //ラジオボタンに何かが選択されているか確認する
   if (SelectedRadioNo.Items[i].Selected)
   {
      //遷移
      Response.Redirect("遷移先");
   }
}
//for分を抜ける(画面遷移がない)というのは何も選択されていない状態ということ
//エラー処理
this.vldSummary.HeaderText = "radioボタンが選択されていません";
------

では、ご健闘を。

引用返信 編集キー/
■24131 / inTopicNo.3)  Re[2]: 1つもラジオボタンが選択されてない時にエラーを出す
□投稿者/ みきぬ (48回)-(2008/08/28(Thu) 10:22:24)
RadioButtonList を使ってるのであれば、ふつーに RequiredFieldValidator を使えばええんじゃないかな?
引用返信 編集キー/
■24160 / inTopicNo.4)  Re[2]: 1つもラジオボタンが選択されてない時にエラーを出す
□投稿者/ ぽっち (43回)-(2008/08/28(Thu) 15:14:22)
No24126 (純@WAS さん) に返信
> 的外れだったらスイマセン
>
> 決定ボタンクリックイベント( private void kettei-btnClick(object sender,EventArgs e))の部分に
> 以下のコードを挿入すれば行けるかと思います。(未検証なので責任は取れませんが)
>
> ------
> //ラジオボタンの要素数だけループをまわす
> for(int i = 0 ; i < SelectedRadioNo.Items.Count ; i ++)
> {
> //ラジオボタンに何かが選択されているか確認する
> if (SelectedRadioNo.Items[i].Selected)
> {
> //遷移
> Response.Redirect("遷移先");
> }
> }
> //for分を抜ける(画面遷移がない)というのは何も選択されていない状態ということ
> //エラー処理
> this.vldSummary.HeaderText = "radioボタンが選択されていません";
> ------
>
> では、ご健闘を。

純@WAS さん、アドバイス誠にありがとうございます。
早速試してみようと思います!
引用返信 編集キー/
■24161 / inTopicNo.5)  Re[3]: 1つもラジオボタンが選択されてない時にエラーを出す
□投稿者/ ぽっち (44回)-(2008/08/28(Thu) 15:16:07)
No24131 (みきぬ さん) に返信
> RadioButtonList を使ってるのであれば、ふつーに RequiredFieldValidator を使えばええんじゃないかな?

助言誠に助かります。
残念ながらRadioButtonListは使っておらず、カスタムコントロールで作られたラジオボタンを使用している為に、
普通の呼び方ではなく、Hidden対応でSelectedRadioNoを呼び出しているのです。なので、普通の判断が出来ずに困っています。
説明不足ですみません。
引用返信 編集キー/
■24164 / inTopicNo.6)  Re[3]: 1つもラジオボタンが選択されてない時にエラーを出す
□投稿者/ みきぬ (50回)-(2008/08/28(Thu) 15:43:10)
No24160 (ぽっち さん) に返信
> ■No24126 (純@WAS さん) に返信
>>決定ボタンクリックイベント( private void kettei-btnClick(object sender,EventArgs e))の部分に
>>以下のコードを挿入すれば行けるかと思います。(未検証なので責任は取れませんが)

CustomValidator を使ったほうがいいんじゃないかな。

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
    for(int i = 0 ; i < SelectedRadioNo.Items.Count ; i ++)
    {
        //ラジオボタンに何かが選択されているか確認する
        if (SelectedRadioNo.Items[i].Selected)
        {
            args.IsValid = true;
            return;
        }
    }

    args.IsValid = false;
}

protected void Button1_Click(object sender, EventArgs e)
{
    if (!Page.IsValid)
        return;

    // 遷移
}

引用返信 編集キー/
■24185 / inTopicNo.7)  Re[1]: 1つもラジオボタンが選択されてない時にエラーを出す
□投稿者/ (・____・)ん? (2回)-(2008/08/29(Fri) 01:42:27)
No24072 (ぽっち さん) に返信

根本的な解決には程遠いですが。。。

「defaultで何処かのラジオボタンを選択しておく」は如何でしょうか?
# 仕様が変わってしまうかな。
引用返信 編集キー/
■24596 / inTopicNo.8)  Re[2]: 1つもラジオボタンが選択されてない時にエラーを出す
□投稿者/ ぽっち (55回)-(2008/09/04(Thu) 17:28:47)
No24185 ((・____・)ん? さん) に返信
> ■No24072 (ぽっち さん) に返信
>
> 根本的な解決には程遠いですが。。。
>
> 「defaultで何処かのラジオボタンを選択しておく」は如何でしょうか?
> # 仕様が変わってしまうかな。


お返事が遅くなりまして申し訳ございません。
確認ボタンを押した後にカウント用の変数を置いて、以下のようなソースにして解決致しました。

int rowCount = 0;
SessionData sessiondata = SessionData.GetInstance();

// 選択エラーが存在する場合、以降の処理は行わない
if (this.SelectedGNo.Value == "")
{
for (int i = 0; i < sessiondata.Edit.Group.Count; ++i)
 {
if (sessiondata.Edit.Group[i].Origin == Info)
{
rowCount = i;
break;
}
}

if (rowCount == 0 || sessiondata.Edit.Group[rowCount].GNum.ToString() == "")
{
this.ErrorMessage.Text = "・選択されていません。";

return;
}



大変、皆様のは参考になりました。
ご協力ありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -