0

DataSet で現在の行の位置を選択したいのですが、ループがなければ可能です。

まず、DataTable を宣言し、データを入力します。

DataTable dr_art_line_2 = ds.Tables["QuantityInIssueUnit"];

そして、私はこのコードを持っている魔女にifループがあります:

if (dr_art_line_2.Rows.Count > 0)
{

   int ID_line = (int)ds.Tables["Line"].Select()[0]["Line_Id"];
   int ID = (int)ds.Tables["QuantityInIssueUnit"].Select()[ID_line]["Line_Id"];

   QuantityInIssueUnit_value = Convert.ToString(dr_art_line_2.Rows[ID] ["QuantityInIssueUnit_Text"]);
   QuantityInIssueUnit_uom = Convert.ToString(dr_art_line_2.Rows[ID]["uom"]);

}
else
{
    QuantityInIssueUnit_value = "";
    QuantityInIssueUnit_uom = "";
 }

ここに問題があります:

int ID_line = (int)ds.Tables["Line"].Select()[0]["Line_Id"];
int ID = (int)ds.Tables["QuantityInIssueUnit"].Select()[ID_line]["Line_Id"];

「Line ID」を選択したいのですが、それは問題ありませんが、ID_line は反復ごとに 1 ずつインクリメントする必要があります。他の何かを選択する方法はありますか?

ありがとう!

4

2 に答える 2

1

CurrentRow (データ カーソル) は、接続されたデータ ソース (VB6 ActiveX ADO) の概念です。CurrentRow を移動、更新、または削除すると、変更がデータ ソースに書き戻されます。

DataTable または DataSet は、切断されたデータ ソース (ADO.NET) から返される行のコレクションです。

DataTable の「現在の行」が必要な場合は、DataTable のラッパー クラスを作成し、iCurrentRow プロパティを追加できます。行を「ナビゲート」するときに、このメンバー変数を更新する必要があります (このラッパー クラスで提供する MoveFirst.MoveLast、MoveNext、および MovePrev メソッドで)。

他の代替手段については、http ://support.microsoft.com/kb/310372 を参照してください。

DataGrid の行番号が必要な場合は、この記事を参照してください: http://www.codeproject.com/Articles/9601/Obtaining-Current-DataTable-Row-for-a-DataGrid

于 2013-03-19T02:40:13.570 に答える
1

これはものです、IT WORKS!!!!

if (dr_art_line_2.Rows.Count > 0)
{   
    int ID_line = dr_art_line_1.Rows.IndexOf(dr_art_line); 

    //int ID_line = (int)ds.Tables["Line"].Select()[0]["Line_Id"];
    int ID = (int)ds.Tables["QuantityInIssueUnit"].Select()[ID_line]["Line_Id"];

    QuantityInIssueUnit_value = Convert.ToString(dr_art_line_2.Rows[ID]["QuantityInIssueUnit_Text"]);
    QuantityInIssueUnit_uom = Convert.ToString(dr_art_line_2.Rows[ID]["uom"]);    
}
else
{
    QuantityInIssueUnit_value = "";
    QuantityInIssueUnit_uom = "";
}
于 2012-07-20T08:45:17.440 に答える