DOBON.NET DOBON.NETプログラミング掲示板過去ログ

データグリッドコントロールに入力

環境/言語:[WindowsXP 使用言語 VB.NET]
分類:[.NET]

例えば、データグリッドの1行1列のセルに○を、2行4列のセルに×を入力するみたいなことは可能ですか?
お願いします。

 -------------------------------------------------------------------
|  ○    |         |         |          |           |             |
 -------------------------------------------------------------------
|       |         |         |    ×    |           |             |
 -------------------------------------------------------------------
|       |         |         |          |           |             |
 -------------------------------------------------------------------
|       |         |         |          |           |             |
 -------------------------------------------------------------------
■No14362に返信(ba-zinさんの記事)
> 例えば、データグリッドの1行1列のセルに○を、2行4列のセルに×を入力するみたいなことは可能ですか?

dataGrid1(0, 0) = "○"
dataGrid1(1, 3) = "×"

でいけると思います。
■No14364に返信(trapemiyaさんの記事)
> ■No14362に返信(ba-zinさんの記事)
>>例えば、データグリッドの1行1列のセルに○を、2行4列のセルに×を入力するみたいなことは可能ですか?
> 
> dataGrid1(0, 0) = "○"
> dataGrid1(1, 3) = "×"
> 
> でいけると思います。

回答ありがとうございます。上記のように記述してみたのですが以下のようなエラーメッセージが出てきてしまいました。


 Microsoft Development Environment

  ‘System.InvalidOperationException’ のハンドルがされていない例外が
    System.windows.forms.dllで発生しました。

    追加情報:DataTableに連結されていないDataGridからデータを読み取ること
    ができません。


何が原因なんでしょうか?
■No14368に返信(ba-zinさんの記事)
> ■No14364に返信(trapemiyaさんの記事)
>>■No14362に返信(ba-zinさんの記事)
> >>例えば、データグリッドの1行1列のセルに○を、2行4列のセルに×を入力するみたいなことは可能ですか?
>>
>>dataGrid1(0, 0) = "○"
>>dataGrid1(1, 3) = "×"
>>
>>でいけると思います。
> 
> 回答ありがとうございます。上記のように記述してみたのですが以下のようなエラーメッセージが出てきてしまいました。
> 
> 
>  Microsoft Development Environment
> 
>   ‘System.InvalidOperationException’ のハンドルがされていない例外が
>     System.windows.forms.dllで発生しました。
> 
>     追加情報:DataTableに連結されていないDataGridからデータを読み取ること
>     ができません。
> 
> 
> 何が原因なんでしょうか?
> 

書き込む部分にあらかじめDataGridのセルは準備されていますか?
実装方法に因るとは思いますが、自分もそういうふうにやったとき、
存在しない(自動でセルは作ってくれなかった)部分に書き込もうと
したらしく、例外墜ちしました。

的外れでしたらごめんなさい。

> 書き込む部分にあらかじめDataGridのセルは準備されていますか?
> 実装方法に因るとは思いますが、自分もそういうふうにやったとき、
> 存在しない(自動でセルは作ってくれなかった)部分に書き込もうと
> したらしく、例外墜ちしました。
>
> 的外れでしたらごめんなさい。


たぶんこれ( 書き込む部分にあらかじめDataGridのセルは準備されていますか )
が原因のような気がします。
DataGridのセルはどのようにしたら表示されるようになるのでしょうか?

何回もすみません。お手数ですがお願いします。
■No14375に返信(ba-zinさんの記事)
>
>>書き込む部分にあらかじめDataGridのセルは準備されていますか?
>>実装方法に因るとは思いますが、自分もそういうふうにやったとき、
>>存在しない(自動でセルは作ってくれなかった)部分に書き込もうと
>>したらしく、例外墜ちしました。
>>
>>的外れでしたらごめんなさい。
>
>
> たぶんこれ( 書き込む部分にあらかじめDataGridのセルは準備されていますか )
> が原因のような気がします。
> DataGridのセルはどのようにしたら表示されるようになるのでしょうか?
>
> 何回もすみません。お手数ですがお願いします。
>
>
>
DataTable1.Rows.Add(DataTable1.NewRow())
自分はこれをループで回してセルを確保しました。
ヘタレの書くコードなので突っ込み所満載ですが、参考までに・・・
■No14362に返信(ba-zinさんの記事)

始めましてエツです。

> 例えば、データグリッドの1行1列のセルに○を、2行4列のセルに×を入力するみたいなことは可能ですか?
> お願いします。



キーボードから○、×が入力できれば多分 あおぞらさんの■No14375だと思います。
キーボードから○、×が入力できなければDataTableとDataGridが連結されていないと思います。
どうもうまくいきません。

こんな感じで作ったのですが、、、


ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Private Sub Form1_Load(ByVal sender As System.Object _
            , ByVal e As System.EventArgs) Handles MyBase.Load

        Dim dtSet As DataSet = New DataSet("aa")
        Dim dtTable As DataTable
        Dim pkCol As DataColumn
        Dim dtRow As DataRow

        'データセットにテーブルを追加する
        dtTable = dtSet.Tables.Add("t_aa")

        'テーブルにフィールドを追加する
          dtTable.Columns.Add( _
                "○○○", Type.GetType("System.String"))
          dtTable.Columns.Add( _
                "△△△", Type.GetType("System.String"))        
          dtTable.Columns.Add( _
                "×××", Type.GetType("System.String"))
          dtTable.Columns.Add( _
                "□□□", Type.GetType("System.String")) 


        'テーブルにセルを追加する。

        Dim i As Integer
        For i = 0 To 9
            dtTable.Rows.Add(dtTable.NewRow())
        Next


        'データグリッドにテーブルを表示する
        DataGrid1.SetDataBinding(dtSet, "t_aa")
    End Sub

End Class

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

dtTable.Rows.Add(New Object() {1, "XXXXXX"})だとデータは入ります。

本当に難しい(>_<)
どうかお願いいたします。
2006/01/07(Sat) 13:26:20 編集(投稿者)

■No14383に返信(ba-zinさんの記事)

こんにちは エツです。宜しくお願いします。

> どうもうまくいきません。
>
> こんな感じで作ったのですが、、、
>

> ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
以下 省略
この部分はデータセット内にテーブルを作り空行を挿入している部分ですね。
ここは特に問題ないと思います。

余談ですが私の場合空行を作らないでdtRow=dtTable.NewRow() で新規の行を作りフィールドに値をいれてdtTable.Rows.Add(dtRow)と追加していきます。

ま、お好みに応じてと言うことで。

> ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
>
> dtTable.Rows.Add(New Object() {1, "XXXXXX"})だとデータは入ります。
>
これは行の追加ですが、テーブルの行と違っています。私はやった事がありませんので、良いか悪いか判断できません。

私はすでにある行のフィールド値の変更は次のようにやっています。
先頭を1行1列として2行2列に文字列5を入れる場合
Dim dr As DataRow
dr=dtTable.Rows(1)
dr(1)="5"
でいけます。

またまとめて
dtTable.Rows(1)(1)="5"
でいけるかも?

あなたが上手く動かないフィールド値変更の部分のコードが記述されてないので推測で書いてみました。違っていたらすみません。
こんにちは。最悪、下記の代わりに1行ずつ記述してみるのは?

'テーブルにセルを追加する。−−−−−−−−−−−

Dim i As Integer
For i = 0 To 9
dtTable.Rows.Add(dtTable.NewRow())
Next

'−−−−−−−−−−−−−−−−−−−−−−−−
上記の代わりに
'1行目
dtRow = dtTable.NewRow()
dtRow(0) = "○"
dtTable.Rows.Add(dtRow)
'2行目
Dim dtRow1 As DataRow
dtRow1 = dtTable.NewRow()
dtRow1(3) = "×"
dtTable.Rows.Add(dtRow1)
'3行目
Dim dtRow2 As DataRow
dtRow2 = dtTable.NewRow
dtRow2(2) = "△"
dtTable.Rows.Add(dtRow2)

とか、どうですか? 参考にならなかったらごめんなさい。
返事遅くなってすみません。

エツさん、こんさん回答ありがとうございます。
おかげで問題を解決する事ができました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板