- PR -

ASP.NET チェックボックスの処理

投稿者投稿内容
ぷり
ベテラン
会議室デビュー日: 2008/02/22
投稿数: 60
投稿日時: 2008-05-12 11:27
RapidExpress様

出来ました!!

RapidExpress様の記載して頂いた内容を理解していない部分がありますので、

一つずつ理解していきたいと思います。

本当にご親切なご指導ありがとうございました。
ぷり
ベテラン
会議室デビュー日: 2008/02/22
投稿数: 60
投稿日時: 2008-05-13 11:12
希望の動作と思ったのですが・・・


「1」でチェックをつけた場合に「あ」にも自動的にチェックが入る様にしたいのです。

「2」「3」にチェックが入った場合は、「あ」にはチェックがつかない。

上記の動作は希望通りなのですが、

間違えてチェックした場合の動作がうまくいきません。

初めに「1」にチェックを入れてしまい、間違いに気づき「2」にチェックしなおした場合、

「あ」「1」「2」にチェックがついてしまいます。




if (chk2.checked)
{
// 2番目のチェックボックスがオンなら1番目もオンにする
chk1.checked = true;
}

// ...以下は、ほかの条件などがあれば

}

この「ほかの条件の部分」に追記すると思うのですが、

IF文を記入しても、コードの上から順に処理されている様で

うまくいきません。

申し訳ないのですが、ご助言お願いいたします。
まるく
大ベテラン
会議室デビュー日: 2004/01/09
投稿数: 181
投稿日時: 2008-05-13 13:14
ここまできたら単にロジックの問題なんだから、自力で考えましょうよ。

引用:

「2」「3」にチェックが入った場合は、「あ」にはチェックがつかない。


言い換えると、「2」「3」をチェックした場合には、「あ」のチェックを外す
ということですよね? 「1」のチェックも外すのかな?
そういうロジックが「正しく」入っていますか?
ともかく自分の求める動きを整理して、そのとおりロジックを入れるだけ。
RapidExpress さんが提示してくださったのはあくまで
引用:

こんな感じになると思います。


です。

#「そういうロジックが〜」の一行追加

[ メッセージ編集済み 編集者: まるく 編集日時 2008-05-13 13:19 ]
RapidExpress
常連さん
会議室デビュー日: 2007/11/11
投稿数: 42
お住まい・勤務地: おおさか
投稿日時: 2008-05-13 13:22
すいません。条件などについては深く考えてなかったので
このままでは複合的な条件を組むのは難しいと思います。

安直ですけどクリックされたかが何なのかを教えてやればうまくいくはずです。
コード:
    // クライアント側
    <script type="text/javascript">
    function Change(box1, box2, box3, box4, no)
    {
        var chk1 = document.getElementById(box1);
        var chk2 = document.getElementById(box2);
        var chk3 = document.getElementById(box3);
        var chk4 = document.getElementById(box4);
        
        switch (no)
        {
            case 1:
                // チェックボックス切り替え
                // ...            
                break;
            case 2:
                // チェックボックス切り替え 
                // 2番目がクリックされたので1番目もオンにする
                chk1.checked = true;                        
                break;
            case 3:
                // チェックボックス切り替え                            
                // ... 
                break;                
            case 4:
                // チェックボックス切り替え                           
                // ... 
                break;
            default:
                break;
        }       
    }
    </script>

    'サーバ側
    Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
        Dim row As GridViewRow = e.Row
        If row.RowType = DataControlRowType.DataRow Then
            'オブジェクト取得
            Dim box1 As CheckBox = row.FindControl("CheckBox1")
            Dim box2 As CheckBox = row.FindControl("CheckBox2")
            Dim box3 As CheckBox = row.FindControl("CheckBox3")
            Dim box4 As CheckBox = row.FindControl("CheckBox4")

            'IDをスクリプトに渡す
            Dim script As String
            script = "Change('{0}', '{1}', '{2}', '{3}', {4});"

            '各ボックスにスクリプトを登録
            box1.Attributes.Add("onclick", String.Format(script, box1.ClientID, box2.ClientID, box3.ClientID, box4.ClientID, 1))
            box2.Attributes.Add("onclick", String.Format(script, box1.ClientID, box2.ClientID, box3.ClientID, box4.ClientID, 2))
            box3.Attributes.Add("onclick", String.Format(script, box1.ClientID, box2.ClientID, box3.ClientID, box4.ClientID, 3))
            box4.Attributes.Add("onclick", String.Format(script, box1.ClientID, box2.ClientID, box3.ClientID, box4.ClientID, 4))
        End If
    End Sub


_________________
//---
 あやのこうじ@RapidExpress
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2008-05-13 22:13
引用:
「あ」「1」「2」にチェックがついてしまいます。


ついてほしくないものは、外せばいいということでは?
コード:
chk1.checked = false;

ぷり
ベテラン
会議室デビュー日: 2008/02/22
投稿数: 60
投稿日時: 2008-05-14 09:14
まるく様、RapidExpress様、べる様 ありがとうございます。

まるく様
引用:

ここまできたら単にロジックの問題なんだから、自力で考えましょうよ。



色々調べてはいるのですが、つい甘えてしまいました。

引用:

そういうロジックが「正しく」入っていますか?



ADPでは、希望の動きをさせています。

当然コードの記入の仕方が違うので、

インターネットや本で調べてみてはいるのですが、

調べ方が悪いのか、RapidExpress様がご提示して頂いた具体的な記入例を見つける事が

できませんでした。


RapidExpress様

何度も申し訳ありません。

ご提示頂いたコードを元にあと一歩で希望の動きが実現できそうです。
(チェックが何もついていない、もしくはチェックを外した場合の「あ」の処理)

再度、調べてみます。


べる様

IF文で行った場合、「CheckBox2」にチェックがついていて、

修正で「CheckBox3」をチェックしても消えなかったのです。

コードの書き方が悪かったのかもしれませんが・・・





ぷり
ベテラン
会議室デビュー日: 2008/02/22
投稿数: 60
投稿日時: 2008-05-14 16:08

チェックボックスの「1」「2」「3」の全てにチェックが入っていない場合、

(チェックが入っていて外した時に全てのチェックボックスがFalse場合も含む)

「あ」のチェックボックスをFalseにしたい為、試行錯誤しました。

サーバ側コードに

If box2.Checked = False And box3.Checked = False And box4.Checked = False Then

box1.Checked = False

End If

を記入して、更新ボタンを押すと希望の動きになりました。

クライアント側で行うコードの記述ヒントをご助言お願いいたします。

javascriptで書きたいのですが、

上記の様な、複数のチェックボックスがFalseだった場合の記述方法がわかりません。

参考HPなどありましたら、よろしくお願いいたします。
RapidExpress
常連さん
会議室デビュー日: 2007/11/11
投稿数: 42
お住まい・勤務地: おおさか
投稿日時: 2008-05-14 16:47
もしかして、文法とかその辺の話をされてます?
それでしたら

http://www.tohoho-web.com/js/basic.htm

とか。。。

とにかく、わざわざサーバ側にコードを書く必要はありません。
必要な情報はすべてそろっているはずです。(一応)
_________________
//---
 あやのこうじ@RapidExpress

スキルアップ/キャリアアップ(JOB@IT)