- PR -

DataGridコントロールのソートについて

1
投稿者投稿内容
バニラミント
ベテラン
会議室デビュー日: 2005/05/27
投稿数: 58
投稿日時: 2005-12-03 15:07
WindowsフォームにDataGridコントロールを貼り付けて
DBの内容を表示させるようにしました

DataGrid内の任意の行をクリックした時、一番左のセルの値を
取得するために次のようなソースを書きました
---------------------------------------------------
Private Sub DataGrid1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGrid1.Click

Try

Dim dtSet As DataSet = CType(DataGrid1.DataSource, DataSet)
Dim dtTbl As DataTable = dtSet.Tables(DataGrid1.DataMember)
Me.sKey = dtTbl.Rows(DataGrid1.CurrentCell.RowNumber).Item(0).ToString()

Catch ex As Exception

'

End Try
End Sub
---------------------------------------------------
この状態で、行をクリックするとプロパティ(sKey)に値がSETされます

ここで1つ問題がありまして。
DataGridの列見出しをクリックするとソートしてくれるのは
すごく便利なのですが、ソートした後、同じように行をクリックすると
正常な値をとれなくなってしまいます。

どうも、ソート前の状態を取得しているようなのですが。

取得方法に問題があるのでしょうか・・・・
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2005-12-03 16:18
こんにちは。

DataGrid の見た目がソートされていようと、DataTable はソートされないからです。
DataGrid のインデクサならば、目的の要件を満たせるのではないでしょうか。

_________________
囚人のジレンマな日々
迦陵頻伽
常連さん
会議室デビュー日: 2005/07/25
投稿数: 21
投稿日時: 2005-12-03 23:23
DataGrid内の『セルの値』を取得したいだけなら、
DataTableなど気にせずに、DataGrid1(row, col)でセルの値を
取得すれば良いだけなのでは?

またDataGridに関連付いているDataSourceからデータを取得したいのなら
DOBON.NETで公開されている『DataGridの現在の行を正しく取得する』が
ズバリなのではないでしょうか?
ttp://dobon.net/vb/dotnet/datagrid/currentrow.html

1

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