- PR -

DataSetの次の行

1
投稿者投稿内容
Yuma
常連さん
会議室デビュー日: 2005/09/22
投稿数: 20
お住まい・勤務地: 東京
投稿日時: 2005-10-17 11:44
DataSetに格納された値の 任意の列を (例)ID =10 を呼び出し 
次へボタンを押すと 次の ID 「11」。。 「12」 のように
DataSetの中のDataTableの中の 任意の一行を選び さらにその次の行を選択するのって
どうすればいいのでしょうか。
ずっと悩んだのですが、、全然わかりません。 (><)
教えてください。お願いします。

[ メッセージ編集済み 編集者: Yuma 編集日時 2005-10-17 11:46 ]
Kazuki
ぬし
会議室デビュー日: 2004/10/13
投稿数: 298
投稿日時: 2005-10-17 12:23
WinFormあたりにBindしてるならCurrencyManager。
そうじゃなければ、ID=10の行のインデックスをとっておいて、それを元に次に…って感じですね。
うちやま
会議室デビュー日: 2005/06/06
投稿数: 8
投稿日時: 2005-10-17 14:17
IOでソートして取得し、順番に処理すればいいと思います。
DataRow[] = Datatable.select(where条件, ソート条件)
Yuma
常連さん
会議室デビュー日: 2005/09/22
投稿数: 20
お住まい・勤務地: 東京
投稿日時: 2005-10-17 18:39
うちやまさんありがとうございます。 
何とか途中まで作ってみたらいい感じにいきました。
ただ 検索の初めの 行番号を指定したくて
テーブルリストの中のID=10をしていしてみるのですが 行番号がどうしてもとれません。
教えてくださいお願いします。


TargetRows = TableList.Select(ID=10)

cedar
会議室デビュー日: 2005/09/13
投稿数: 10
投稿日時: 2005-10-17 20:40
ところで、環境は何でしょうか?
Visual Studioを使用しているならデバックモードで
DataSetに値を代入した後にストップしてDataSetを隅々まで
見てみると、答えが出るような気がします。

ちなみに
Dataset ,DataTable,DataRowのメンバを調べて見るといいかもしれません。

DataSetのメンバ
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdatadatasetclasstopic.asp
DataTableのメンバ
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdatadatatablememberstopic.asp
DataRowのメンバ
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdatadatarowmemberstopic.asp

上の場合ですと、取得したDatarowからItemを取得すればいいと思います。
TargetRows.Item(行番号)で行けると思います。
(試してないので、不正確なところがあるかもしれません)

私の場合DataTable内に取得したい物がありましたら
[DataTable].Rows(列番号).Item(行番号)
と言うような形で取得します。

ちなみに取得した場所がObjectでしたら
Dim obj1 as NEW Object
obj1=FindControl([DataTable].Rows(列番号).Item(行番号).uniqueid)
という形で取得できます

内容外していたらすいません(* _ _)

#修正、日本語のメッセージの変更(意味が通じないところがありましたので)
取得したい物がObjectだった場合の方法の追加


[ メッセージ編集済み 編集者: cedar 編集日時 2005-10-17 20:51 ]
Yuma
常連さん
会議室デビュー日: 2005/09/22
投稿数: 20
お住まい・勤務地: 東京
投稿日時: 2005-10-18 14:50
Cedarさんありがとうございます。
VisualStudio使用しています。
Row番号を指定したRowの情報でなく
Rowの情報から Row番号を引き出したいのですが。。可能でしょうか?
デバックで見たところ DataRowのRowID がそのあたいなのですが
Privateのため 取得できません。
ご伝授おねがいします。
cedar
会議室デビュー日: 2005/09/13
投稿数: 10
投稿日時: 2005-10-18 21:45
ゴメンなさい、一部オオボケやってました

*----------------------------------------*
ちなみに取得した場所がObjectでしたら
Dim obj1 as NEW Object
obj1=FindControl([DataTable].Rows(列番号).Item(行番号).uniqueid)
という形で取得できます
*-----------------------------------------*

これ、datagridから行、列の取得方法とごっちゃにしてました。(ゆえに動きません)
これは無視してください。

で、本題ですけど
(DataTable)Datasetからdatarowを取得する場合、
DataSetのDataTableに行数を追加したらだめかな?

  Dim dc as DataColumn
  dc = new DataColumn
  dc.AllowDbnull = False
  dc.Caption = "No"
  dc.ColumnName="No"
  [DataTable].columns.add(dc)

  For i= 0 to [DataTable].Rows.Count -1
    [DataTable].Rows(i).Item("No") = i
  Next
  [DataTable].AcceptChanges()

こうしておけばRow情報取得した時、追加したColumnからRow番号取得できると思います。
(今はこれしか思い浮かばないよう;;)

もっといい方法ありましたら、識者の方、ヨロシクお願いします。

#プログラムのレイアウトを変更

[ メッセージ編集済み 編集者: cedar 編集日時 2005-10-18 21:48 ]
Yuma
常連さん
会議室デビュー日: 2005/09/22
投稿数: 20
お住まい・勤務地: 東京
投稿日時: 2005-10-19 14:24
Cedarさん ありがとうございます^^
おかげさまで行番号を取得成功しました。
本当にありがとうございます^^//

ただ行数を追加しないで DataSet内部でFillするたんびに
Row番号みたいなのが振付けられないんですかね?
1

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