使用NewRows数组填充DataTable

时间:2013-08-19 18:38:44

标签: c# arrays reporting-services datatable

感谢您的帮助!我试图填写DataTable,然后再将其引入Microsoft Reporting Services的报告中。

我原本以为我可以运行for look(取决于我的“MainTable”中有多少行,并分配每个类别并将其刷新为Rows.Add并重复但显然我不能Row.Add同名NewRow。这是我迄今为止所做的。感谢您的帮助!:

MyDataSet.ESSRow newESS = MyDataSet.ESS.NewESSRow();
        for (int i = 0; i < ds.Tables["MainTable"].Rows.Count; i++)
        {
            DataRow dRow = ds.Tables["MainTable"].Rows[i];
            if(Convert.ToInt32(dRow.ItemArray.GetValue(9).ToString()) > ShiftDelta)//checks if instance is longer than a shift 
            {
            newESS.Station = "7";
            newESS.Switch ="7";
            newESS.Start = dRow.ItemArray.GetValue(6).ToString();
            newESS.Stop = dRow.ItemArray.GetValue(7).ToString();
            newESS.SwitchIs = dRow.ItemArray.GetValue(8).ToString();
            TimeSpan t = TimeSpan.FromSeconds(Convert.ToInt32(dRow.ItemArray.GetValue(9).ToString()));
            newESS.Duration = string.Format("{0:D2}h:{1:D2}m:{2:D2}s", t.Hours, t.Minutes, t.Seconds);
            MyDataSet.ESS.Rows.Add(newESS);                 }

        }

2 个答案:

答案 0 :(得分:0)

还尝试使用importRow,因为这不会让恼人的行已经属于另一个表错误。

答案 1 :(得分:-1)

不要尝试多次添加同一行,而是在循环的每次迭代中创建一个新行。这可以通过将newESS的声明移动到循环的内部而不是循环的外部来完成。除此之外,您还应将其移至if语句内,以便在不添加新行时不创建新行。