DataGridViewとindexの関係について

タグの編集
投稿者 シャチョさん  (社会人) 投稿日時 2008/11/19 01:46:15
またまた教えてください。
VisualBasic2008です。
データをDataGridViewに表示させ、

ボタンを押すごとに
Dim Table As DataTable = CType(DataGridView1.DataSource, DataTable)
MsgBox(Table(0)(0))
と一番最初のデータを表示できるようにしておいて、

DataGridView一番上の部分をクリックして並び順を変えてボタンを押して
一番最初のデータを表示させても、値は変わらないのですか?

元のデータベースに反映させないで、並べ替えたDataGridViewを使って処理したいのですが、
良い方法はありますか?
投稿者 たらのめ  (社会人) 投稿日時 2008/11/19 05:44:31
>DataGridView一番上の部分をクリックして並び順を変えてボタンを押して
一番最初のデータを表示させても、値は変わらないのですか?

試してみればわかる事では???

>MsgBox(Table(0)(0))

DataTableの1行目ではなく、DataGridViewの1行目を参照して下さい。
そもそもこんな書き方できましたっけ???『Table(0)(0)』
投稿者 茶封筒  (小学生) 投稿日時 2008/11/19 06:16:29
引数のあるサブなんかだと・・
MsgBox(hatena(1,2,3,4,5))
とか。。(^^)
投稿者 シャチョさん  (社会人) 投稿日時 2008/11/19 20:44:19
すみません、こんな感じです。
適当にフォームにDataGridView1とButtonを貼り付けてください。
    Private Sub test_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ''データテーブル
        Dim dt As New DataTable
        ''フィールド(列)を追加
        dt.Columns.Add("No1", Type.GetType("System.Int16"))
        dt.Columns.Add("No2", Type.GetType("System.Int16"))
        dt.Columns.Add("No3", Type.GetType("System.Int16"))
        dt.Columns.Add("No4", Type.GetType("System.Int16"))
        dt.Columns.Add("No5", Type.GetType("System.Int16"))
        ''適当にデータを代入
        Dim Data(4, 4) As Integer
        Dim ANS As Integer = 0
        For i = 0 To 4
            dt.Rows.Add(i)
            For j = 0 To 4
                dt.Rows(i)(j) = ANS
                ANS += 1
            Next
        Next
        ''データグリッドビューにセット
        DataGridView1.DataSource = dt
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'ボタンにて一番目のデータを表示
        Dim Table As DataTable = CType(DataGridView1.DataSource, DataTable)
        MsgBox(Table(0)(0)) '表の左上のデータ
    End Sub

ボタンを押して表の左上のデータを表示させると ’0’です
DataGridViewの一番上をクリックしてデータを並べ替え
ボタンを押して表の左上のデータを表示させると ’0’です
DataGridViewは並べ替えられたのですから変わった数字がほしいのですが
どうすればよいでしょうか?




投稿者   (社会人) 投稿日時 2008/11/19 21:41:53
>DataGridViewは並べ替えられたのですから変わった数字がほしいのですが
>どうすればよいでしょうか?
たらのめさんが既に答えていますけど。
投稿者 neptune  (社会人) 投稿日時 2008/11/19 22:23:16
こんにちは

DataGridView.Item プロパティか、DataGridView.Rows プロパティ辺りを調べると
幸せになれますよ。
投稿者 茶封筒  (小学生) 投稿日時 2008/11/20 00:32:28
ローカルデータベースしか知らないのでアレですが。
新しいプロジェクトを作成して、dataソースは入れて、テーブル名前をクリックして、DataGridViewを選択して、クリックしたままフォームにDatagridViewを落としてみてください。
特別なツールバーが自動的に付録として装備されます。
プロフェッショナルeditionの機能が無料版でも使えます。

投稿者 茶封筒  (小学生) 投稿日時 2008/11/20 00:44:30
質問の意味が、あまりわからないですが。
ツールの機能はソート機能もついてる。
値段の高い順に並びかえたり、コード無しで、できます。
っか、なんか難しいコードばかり書いてる人なんで、僕チン(入門者)よりは、上の人でしょう。
ではでは。
投稿者 シャチョさん  (社会人) 投稿日時 2008/11/20 00:48:47
やっと幸せになりました。
読み取るところを

 DataGridView1.Item(0, 0).Value

とすればOKでした。

皆様ありがとうございました。