- PR -

DataGridでの選択されている行の取得

1
投稿者投稿内容
mopooh
会議室デビュー日: 2004/03/04
投稿数: 6
投稿日時: 2004-03-05 10:18
[VB.NET-Oracle8i-Windows2000]

お世話になります。

DataGridで選択されている行を取得して、行の列(項目内容)を取得しているのですが
以下の方法で行は取得でき、Ds.Table1.Rows(取得行)("列")で列も取得できています。
ここでDataGridのHeaderText部分をクリックし昇降順を入れ替え後に選択すると、
入れ替える前の情報を取得しています。 どなたかご教授お願いいたします。
(下記では4を選択しているが取得できるのは2である)

列(前)   列(後)  
1      5
2      4(選択)
3   →  3
4      2
5      1

Try
  Dim n As Integer = _
  DataGrid1.BindingContext(DataGrid1.DataSource, DataGrid1.DataMember).Count
    Dim i As Integer
    For i = 0 To n - 1
      '行が選択されているか調べる
      If DataGrid1.IsSelected(i) Then
        '選択されていればその行番号を表示する
        Exit For
      End If
    Next
Catch ex As Exception
   MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Exception")
End Try
KEN@
会議室デビュー日: 2004/02/07
投稿数: 12
投稿日時: 2004-03-05 15:19
こんにちは。
ソート後の行は DsTabke1.DefaultView[行番号]["列名"] で取得できるはずです。
(あとは簡単にDataGrid1[行番号][列番号]でもOKだったはず)
どちらも現在環境がないので未確認ですが、試してみてください。
mopooh
会議室デビュー日: 2004/03/04
投稿数: 6
投稿日時: 2004-03-05 15:50
早速の回答有難うございます。
以下のように試してみましたが変化は見られませんでした。
ソート後もソート前の列を引っ張りました。

データセット名.Table名.DefaultView(行番号)("列名")

KEN@
会議室デビュー日: 2004/02/07
投稿数: 12
投稿日時: 2004-03-05 16:20
あれれ、ダメでしたか。ごめんなさい。
C#ですがサンプルを作ってみました。
DataSetをバインドするとDefaultViewは利用されないみたいですね。
ちょっと汚いかもしれませんが...

DataSet wSet = (DataSet)dataGrid1.DataSource;
DataTable wTable = wSet.Tables["テーブル名"];
object wValue = dataGrid1[行番号, wTable.Columns.IndexOf("列名")];

で一応取れました。
1

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