none
DataGridViewで再表示すると変更不可にならない RRS feed

  • 質問

  • Visual Basic 2008 にて開発していますがDataGridViewについて質問させて下さい。

    DataGridViewのデータ表示は、検索結果をDataTableに格納し、
    そのDataTableをDataSourceに設定する方法で行っています。

    DataGridView内にはチェックボックスがあり、
    そのチェックボックスは条件によってReadOnly = Trueにて変更不可にして表示しています。

    最初の表示は問題なく条件に合えば ReadOnly = Trueにて変更不可になり表示してくれますが、
    再表示すると条件に合っているのにReadOnly = Trueが効かず、
    チェックボックスが変更可能となって表示してしまいます。

    ReadOnly=True にする方法は、DataGridView の件数を取得し、

    jjCnt = 0
    Do Until jjCnt >= ggCnt
      If DataGridView1.Rows(jjCnt).Cells(88).Value.ToString() = "1" Then
            DataGridView1.Rows(jjCnt).Cells(0).ReadOnly = True
        End If
        jjCnt = jjCnt + 1
    Loop

    で行っています。

    何故、再表示だと変更不可にならないのか解らずご教授願いたく宜しくお願い致します。

    2009年9月3日 2:37

すべての返信

  • 「再表示」という処理はどんな内容でしょうか。
    DataGridView.DataSource に再代入してると起こりやすそうなミスですけど(DataSource プロパティに設定直後はまだバインドが完了していないので、その時点で変更を加えても無意味)。
    2009年9月3日 4:49
  • Hongliang様
    返答有難う御座います。
    再表示は、言われている様に、DataTableはそのままで、DataGridView.DataSourceに再代入しています。
    その直後に、
    jjCnt = 0
    Do Until jjCnt >= ggCnt
      If DataGridView1.Rows(jjCnt).Cells(88).Value.ToString() = "1" Then
            DataGridView1.Rows(jjCnt).Cells(0).ReadOnly = True
        End If
        jjCnt = jjCnt + 1
    Loop
    してDataGridViewを表示しています。
    2009年9月3日 7:23
  • 先ほども書いたように、DataSource に設定直後はまだバインディングが完了していません。
    DataBindingComplete  イベント辺りを使って、バインディング完了後にセルの操作を行ってください。
    2009年9月3日 9:32
  • 恥を忍んで記載します。
    尚且つ、このフォーラムはヒントを頼りに自分で調べて解決する事も重々承知していますが、
    DataBindingComplete関係調べてもバインディングを完了する方法が解りません。

    又、DataBindingCompleteの関係だと思いますが、最初は問題なくて、
    再表示だとReadOnly = Trueにならない理由も解りません。
    お手数ですが、ご伝授願いたく宜しくお願い致します。

    2009年9月4日 4:59