- PR -

CheckBoxのチェックが反映されない?

投稿者投稿内容
nori
ベテラン
会議室デビュー日: 2004/09/02
投稿数: 56
投稿日時: 2005-10-11 14:51
いつもお世話になっております。
VBでWebアプリを作成しております。

先日色々とご質問させていただき、以下の部分については出来るようになりました。

1.DataGridにテンプレート列を設けてチェックボックスを配置しました。
2.ボタンを押すとマウスでチェックONされた行だけ処理されます。
3.さらにソート機能をつけて、ソートしてもチェックONが解除されない
  ようにしました。

ユーザの要望で「ずべてチェックON」と「すべてチェックOFF」のボタンを
付けることになりました。
この機能は簡単に作ることができました。

しかし、この機能を実行した後にソートを行うと元の状態に戻ってしまいます。
マウスで個別にチェックしたところはソートしても問題ありません。

全てチェックONのロジックは以下の通りです。
-----------------------------------------------------
Private Sub btnON_Click(ByVal sender As System.Object,
             ByVal e As System.EventArgs) Handles btnON.Click
 Dim Row As DataGridItem
 Dim check As CheckBox
 For Each Row In DataGrid1.Items 'DataGridの行を順番に読む
   check = CType(Row.FindControl("CheckBox1"), CheckBox)
   check.Checked = True
 Next
End Sub
-----------------------------------------------------

マウスでクリックした時と、すべてチェックONした時の状態は
見た目には同じように見えるのですが、何か違いがあるようです。
チェックが保存されていないのでしょうか?

どうぞよろしくお願い致します。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2005-10-11 15:23
"ソート機能"ってのが問題かもしれませんね。

具体的にはどんなことをやってます?
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-10-11 15:38
引用:

noriさんの書き込み (2005-10-11 14:51) より:
先日色々とご質問させていただき、以下の部分については出来るようになりました。


このスレッドのことかな?
キャッシュに保存したDataSetにチェックボックスの情報をしまってますね。
全てチェックONしたらDataSetにも反映してあげないと。
nori
ベテラン
会議室デビュー日: 2004/09/02
投稿数: 56
投稿日時: 2005-10-11 17:54
皆様、早々にありがとうございます。

参考にして試していたところ、実行した瞬間に間違えに気づき止めました。
そしたら以下のようなメッセージが表示されるようになり、
デバッグできなくなってしまいました。

============================================================================
プロジェクトを実行しようとしているときにエラーが発生しました:Webサーバーで
デバッグを開始できません。デバッガは既にアタッチされています。
============================================================================

ちょっと強引に止めてしまったので、恐らくデバッガが壊れてしまったのでは
ないかと思います。
Framworkを入れなおさないとダメなのでしょうか。。。

ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-10-11 18:41
OSを再起動してもダメですか?(^^;
cedar
会議室デビュー日: 2005/09/13
投稿数: 10
投稿日時: 2005-10-11 20:46
運がよければIISの再起動で元に戻りますよ。

ぼのぼのさんの言うとおり、
多分OSを再起動すれば直ると思います。
nori
ベテラン
会議室デビュー日: 2004/09/02
投稿数: 56
投稿日時: 2005-10-12 11:02
ありがとうございます。

憂鬱な気持ちで出社しました。
パソコンを起動して、皆さんのメッセージをみて元気が出ました!
恐る恐るやってみたらデバッグできました!!

昨日、シャットダウン時に起動中のアプリが1つ残っていたので
あれがそうだったんですねぇ。

これから続きをやって、また状況をご報告します♪
nori
ベテラン
会議室デビュー日: 2004/09/02
投稿数: 56
投稿日時: 2005-10-13 15:18
お陰さまで、問題が解決いたしました!

ぼのぼの様の「DataSetにも反映して・・・」というヒントをもとに
考えてみました。

1.BindGrid()でソートの情報をSessionに保存
2.全てチェックONのロジックを以下のような記述に変更

---------------------------------------------------------
Private Sub btnON_Click(ByVal sender As System.Object,
         ByVal e As System.EventArgs) Handles btnON.Click

  Dim ds As New DataSet
  Dim oTable As New DataTable
  Dim oRow As DataRow
  Dim count As Integer
  Dim i As Integer
  Dim dv As New DataView

  ds = Cache("DS")
  oTable = ds.Tables(0)
  count = oTable.Rows.Count()
  For i = 0 To count - 1
    oRow = oTable.Rows(i)
    oRow("CHECK_FLG") = True
    dv = ds.Tables(0).DefaultView
    dv.Sort = Session("strSORT")
    With DataGrid1
      .DataSource = dv
      .DataBind()
    End With
  Next
End Sub
---------------------------------------------------------

皆様、ありがとうございました☆
今後ともよろしくお願いいたします。

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