はじめまして、宜しくお願いします。
ASP.netのC#で開発を行っています。
チェックボックスリストのチェックボックスをチェックした際に、
SelectedIndexChangedイベントが発生しサーバ側で受け取れる
はずだと思っているのですが、全くポストバックされていないようです。
プロパティの「AutoPostBack」はTrueにしています。
ほかに条件はありますでしょうか?
ご存知の方がいらっしゃいましたら、宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
もしかして、先ほど、
http://okwave.jp/qa4974802.html
で質問したやり方で、動的に選択項目を生成しているからイベントが発生しないとか?いや、それはないかなぁ。AutoPostBackもTrueみたいですし。
一応、イベント設定方法のやり方は2種類あるのでどちらかお好きな方でおためしください。
方法1:
CheckBoxList を定義している個所に
「OnSelectedIndexChanged="イベント処理用メソッド名"」
を記述する
例:
<asp:CheckBoxList
ID="CheckBoxList1"
runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="CheckBoxList1_SelectedIndexChanged">
</asp:CheckBoxList>
方法2:
Page_Init や Page_Load などのイベントで、
CheckBoxList1.SelectedIndexChanged += new EventHandler(イベント処理用メソッド名);
を記述する
例:
protected void Page_Init(object sender, EventArgs e)
{
CheckBoxList1.SelectedIndexChanged += new EventHandler(CheckBoxList1_SelectedIndexChanged);
}
protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
// 選択された時の処理を書く
if (CheckBoxList1.SelectedIndex > -1)
{
Label1.Text = CheckBoxList1.SelectedValue;
}
else
{
Label1.Text = string.Empty;
}
}
また、わからなければご連絡ください。
ご回答ありがとうございます!
まず、今までやっていたのは方法2の方法でした。
しかし、CheckBoxList1.SelectedIndexChanged += new EventHandler(CheckBoxList1_SelectedIndexChanged);
の部分はまったく記述していませんでした。
ただチェックボックスリストのコントロールをダブルクリックしてジャンプしたCheckBoxList1_SelectedIndexChangedの中に処理を記述しただけでできると思っていました。
よって方法2を参考に
CheckBoxList1.SelectedIndexChanged += new EventHandler(CheckBoxList1_SelectedIndexChanged);
を追記してみたところ動作は変わらず。
ブレークポイントを張ってみても通りません。
次に方法1のロジックをHTMLのコードに追記してみました。
が、チェックを付けてもイベントが発生しません。
しかし今度は、「チェックをつけた後に何かほかのボタンを押したら、その時にボタンクリックイベントの直前にSelectedIndexChangedイベントが発生している」模様です。
ひょっとしてこの動作が「SelectedIndexChangedイベントが発生している」状態なんでしょうか?
私はAutoPostBackをTrueにすれば、チェックを入れた瞬間にポストバックが行われると思っていたのですが・・・いかがでしょうか?
長々と書いてしまい申し訳ありません。
宜しくお願い致します。
No.4
- 回答日時:
>Userが金額を入力できるスプレッドがあり、Userが金額を修正した瞬間に合計を集計してスプレッド外のテキストボックスに即座に反映するようにしたいと思っているのですが可能でしょうか?
スプレッドのイベントの取り方などをサイトで調べてもあまり情報が無いようで・・・。
>良いURLでもありましたらご教授いただきたいと存じます。
この件は、新規質問で別途スレッドをあげて頂けると助かります。
即答できますが、当初の質問に対する問題は解決したので、このスレッドを締め切った後に、上記質問を新規で質問して頂けると有難いです。
わかることであればお答えしますので、宜しくお願いします。
No.3
- 回答日時:
>しかし今度は、「チェックをつけた後に何かほかのボタンを押したら、その時にボタンクリックイベントの直前にSelectedIndexChangedイベントが発生している」模様です。
もしかして、IsPostBack で条件判定している中に
SelectedIndexChangedイベントを設定したり、AutoPostBackを
Trueにさせるようなことしてませんか?
ひとまず下記のようなコードに書きなおしてみてください。
--------------------------------------------------------------
*.aspx ファイル
--------------------------------------------------------------
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:CheckBoxList
ID="CheckBoxList1"
runat="server" />
<asp:Label ID="Label1" runat="server">
</asp:Label>
</form>
</body>
</html>
--------------------------------------------------------------
*.aspx.cs ファイル
--------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Default : System.Web.UI.Page
{
protected void Page_Init(object sender, EventArgs e)
{
// CheckBoxList1のイベントを追加する
CheckBoxList1.AutoPostBack = true; // ポストバックを有効
CheckBoxList1.EnableViewState = true; // ViewStateを有効
CheckBoxList1.SelectedIndexChanged += new EventHandler(CheckBoxList1_SelectedIndexChanged);
}
protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
// 選択された時の処理を書く
if (CheckBoxList1.SelectedIndex > -1)
{
string value = string.Empty;
foreach (ListItem item in CheckBoxList1.Items)
{
if (!item.Selected)
{
continue;
}
if (!string.IsNullOrEmpty(value))
{
value += ",";
}
value += item.Value;
}
Label1.Text = value;
}
else
{
Label1.Text = string.Empty;
}
}
protected void Page_Load(object sender, EventArgs e)
{
// PostBackではなく初期ロードの時
if (!IsPostBack)
{
// チェックボックスリストの項目を表示する
List<ListItem> items = new List<ListItem>();
items.Add(new ListItem("項目1", "1"));
items.Add(new ListItem("項目2", "2"));
items.Add(new ListItem("項目3", "3"));
CheckBoxList1.Items.AddRange(items.ToArray());
}
}
}
もし、上記でも動かなければ、一度、リビルドしてみてください。
イベント設定したのに、イベントが動かないというのは、
イベントを設定したロジックを通っていない以外にはありえませんので
よく、ソースコードをご確認ください。
>私はAutoPostBackをTrueにすれば、チェックを入れた瞬間にポストバックが行われると思っていたのですが・・・いかがでしょうか?
その認識で正しいですよ。間違ってないです。
もし、これでも問題解決できなければ、作ったソースコードを見せてください。どうぞ宜しくお願いします。
こんなに丁寧にご回答していただいて、本当に有難うございます!
いただいたソースコードにて正常動作を確認しました。
そして、今まで動かなかった原因が判明しました。
「コントロールのプロパティで"AutoPostBack"をTrueにしているのに、HTMLのコードでみるとTrueになっていない」
という状況でした。
このHTMLに手書きでAutoPostBack=Trueを加えるとうまく行きました。
何故こんなことになったのかは全くわかりませんが・・・??
とりあえずkero-mioさんのソースコードを参考に、デザイナからではなくコードからCheckBoxList1.AutoPostBack = true; とするようにし
正常動作するようになりました!
なんだかデザイナのボタンの名称とHTMLのコード上での名称が
合わないこともあったりしたので、この辺はけっこう怪しむ必要が
ある感じなのでしょうかね?
丁寧にアドバイスありがとうございました!助かりました!
ちなみに、もうひとつ別件で質問があるのですが・・・(調子に乗ってすみませんw kero-mio様が詳しそうなもので。)
Userが金額を入力できるスプレッドがあり、Userが金額を修正した瞬間に合計を集計してスプレッド外のテキストボックスに即座に反映するようにしたいと思っているのですが可能でしょうか?
スプレッドのイベントの取り方などをサイトで調べてもあまり情報が無いようで・・・。
良いURLでもありましたらご教授いただきたいと存じます。
No.1
- 回答日時:
当方のWinXP SP3 + VS2005 SP1 + IIS の環境では
綺麗にポストバックしますよ
データバインディングでCheckBoxの項目を生成するのではなく
Itemsコレクションに追加してテストしております
質問の現象の発生する最小の手順も明記したほうがよいかと思います
開発環境や実行環境の明示もしましょう
ご回答ありがとうございます。
そーですか~、ポストバックしするんですね~。
私の環境はVisualStudio2008のC#で、IISは使ってません。
(そもそもIISが何か全くわかっていないのです。すみません勉強します。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBAでチェックボックスにチェックを入れる 1 2022/09/14 00:52
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- JavaScript javaScriptで画面に値を入れるには 1 2022/08/14 12:27
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Excel(エクセル) excelvbaのenableeventsについて 3 2022/08/30 11:20
- その他(Microsoft Office) EXCELでバーコードを作成すると白くなってコードが見えません 1 2022/04/04 14:24
- レシピ・食事 腸管癒着の診断、食事について教えて下さい。 食物繊維と腸内ガスを発生させる食物を控えるように指示を受 2 2023/04/19 18:03
- 写真・ビデオ iphoneからPCへ写真をインポート、保存先がわかりません。 2 2022/09/29 02:06
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Visual Basic(VBA) ListView1の条件のやり方 3 2022/06/18 22:43
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
PageLoadの後にJavascript実行したい
Microsoft ASP
-
GridViewの行選択イベントを発生させるには?
JavaScript
-
DropDownListの初期値の設定(C#)
その他(プログラミング・Web制作)
-
-
4
【ASP2.0】TextBoxのフォーカスアウトでPostBackを実装させたい
Microsoft ASP
-
5
ポストバック時の画面スクロール位置の保持
Microsoft ASP
-
6
TextChangeイベントが発生しない
JavaScript
-
7
aspxでIFみたいなことがしたい
Microsoft ASP
-
8
GridviewとDataGridviewの違い
Microsoft ASP
-
9
VBScript から JavaScript を呼び出すには
Visual Basic(VBA)
-
10
javascriptからサーバサイドの処理を呼び出す方法を教えてくださ
JavaScript
-
11
ASP.NetのGridViewで任意の行クリックで選択を行う方法
Microsoft ASP
-
12
DataGridの中身をDataSetにテーブルとして保存する方法 (初心者)
Visual Basic(VBA)
-
13
vb.netで画面のコントロールId名を変数で動的に制御し処理する方法
Visual Basic(VBA)
-
14
Webページ上のボタン等の位置を移動したい。
Microsoft ASP
-
15
グリッドビューでのチェックボックス押下時イベント
Visual Basic(VBA)
-
16
テーブルの最後(最新)のレコードを抽出したい
MySQL
-
17
ポストバック時のDatasourceバインド処理について
Microsoft ASP
-
18
MERGE文を単体テーブルに対して行いたい
Oracle
-
19
【ASP.NET】 DataTextFieldの値を取得する方法について
その他(プログラミング・Web制作)
-
20
C# ログイン画面からメイン画面への画面遷移について
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ASP.NETでTimerコントロールを...
-
aspxでIFみたいなことがしたい
-
ASP.netで、CheckBoxListのSele...
-
javascriptでlabelの値取得
-
HTMLの値の渡し方について質問...
-
SELECTボックスの内容を動的に...
-
ACCESSのレポートの表示...
-
アンケート個別表示について教...
-
遷移先のURLにパラメータを表示...
-
フォームから入力された改行コ...
-
C#のRichTextBoxで表示行数を取...
-
奇数・偶数の区別をプログラミング
-
スペースの取り方について
-
C言語について。
-
javascriptで結果表示テキスト...
-
NotifyIconで二列の文字列を表...
-
ASPからEXCELに出力する
-
write downとfill outの違いを...
-
テキストボックスを横並びで表示
-
テキストボックスにマクロでメ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
aspxでIFみたいなことがしたい
-
ASP.netで、CheckBoxListのSele...
-
ASP.NETで質問です。
-
ASP.NETでTimerコントロールを...
-
<asp>タグの属性情報が取得でき...
-
c#側で ラジオボタンのチェック...
-
javascriptでlabelの値取得
-
クリックしたボタンのIDの取得
-
FormViewのEditItemTemplateに...
-
FormView から別画面でカレンダ...
-
ASP.net Ajaxが動作しませんな...
-
<ASP>にTextBoxの...
-
aspx画面のINPUTボタンにファン...
-
ページごとに有効な変数
-
HTMLの値の渡し方について質問...
-
ACCESSのレポートの表示...
-
遷移先のURLにパラメータを表示...
-
phpの<br>\\nと\\nとエスケープ...
-
該当セルに行替えを含むデータ...
-
write downとfill outの違いを...
おすすめ情報