我试图添加一个递增时间!我的数据网格视图的列,以及从流读取器中提取的数据旁边的';我有增量工作但时间在行之间而不是在它们旁边。 数据显示如下:
十五点46分20秒
91 154 70 309 83 6451
15时46分21秒
91 154 70 309 83 6451
当我想让它像这样: 15:46:21 91 154 70 309 83 6451
while ((r.Peek() != -1))
{
string timeS = "";
string delimeter = "\t";
string[] Time1;
allData = r.ReadLine();
timeS = Dtime.ToString();
Time1 = timeS.Split(' ');
timeS = Time1[1];
string[] rows = allData.Split("\r".ToCharArray());
foreach (string row in rows)
{
Dtime = Dtime.AddSeconds(inter);
dataset.Tables[tableName].Rows.Add(timeS);
string[] items = row.Split(delimeter.ToCharArray());
dataset.Tables[tableName].Rows.Add(items);
}
this.dataGridView1.DataSource = dataset.Tables[0].DefaultView;
}
干杯!
答案 0 :(得分:0)
我认为问题是:
dataset.Tables[tableName].Rows.Add(timeS);
其次是:
dataset.Tables[tableName].Rows.Add(items);
这就是为什么要添加两行。
虽然有更好的方法可以做到这一点。听起来好像你想动态添加另一列来保存时间值。这是在数据表中定义的,还是在运行时添加?无论哪种方式,它都需要存在才能保持价值。
我修改了上面的代码,将时间值输入到item数组的最后一个位置。它根本不漂亮,可以大大简化。这是我的代码:
string timeS = "Time";
string row = "Value1,Value2,Value3";
string delimeter = ",";
string[] items = row.Split(delimeter.ToCharArray());
string[] newItems = new string[items.Length + 1];
items.CopyTo(newItems, 0);
newItems[newItems.Length - 1] = timeS;
所以现在你有一个数组,其中最后一项是时间值。您可以将其添加到数据表中:
dataTable.Rows.Add(newItems);
我确信有更好的方法可以做到这一点,也许这会帮助你朝着正确的方向前进。
答案 1 :(得分:0)
不应将timeS
作为新行添加,而应将其添加为items
数组中的第一项,然后将该数组添加为行。
例如:
var items = new List<string>{timeS};
items.AddRange(row.Split(delimeter.ToCharArray()));
dataset.Tables[tableName].Rows.Add(items.ToArray());