在DataSet中选择当前行位置

时间:2012-07-20 08:17:49

标签: c# dataset

我想在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,是否有办法选择其他东西?

谢谢!

2 个答案:

答案 0 :(得分:1)

CurrentRow(数据光标)是连接数据源的概念(VB6 ActiveX ADO。)当您移动,更新或删除CurrentRow时,更改将被写回数据源。

DataTable或DataSet是从DISconnected数据源(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

答案 1 :(得分:0)

这就是东西,IT工作!!!!

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 = "";
}