我正在尝试使用数据表填充超网格,数据表有5列,其中数据将根据字符串值插入到相应的行中。我得到的问题很难解释,我能解释的最好的是,当我将数据插入列时,它会创建一个全新的行,因此每行只能填充一列。我很欣赏这个解释不太好,所以请提前道歉。
我希望结果如下:
预期输出
Column1 Column2 Column3 Column4 Column5
123 123 123 123 123
546 546 546 546 546
实际输出
Column1 Column2 Column3 Column4 Column5
123
123
123
123
123
代码
DataTable dt = new DataTable();
dt.Columns.Add("Column1");
dt.Columns.Add("Column2");
dt.Columns.Add("Column3");
dt.Columns.Add("Column4");
dt.Columns.Add("Column5");
lblItemCount.Text = string.Format("Current items within Sprint: {0}", task.Count().ToString());
foreach (Task t in task)
{
var row = dt.NewRow();
if (t.AssignedTo == "Person1")
{
row["Column1"] = t.Id.ToString();
}
if (t.AssignedTo == "Person2")
{
row["Column2"] = t.Id.ToString();
}
if (t.AssignedTo == "Person3")
{
row["Column3"] = t.Id.ToString();
}
if (t.AssignedTo == "Person4")
{
row["Column4"] = t.Id.ToString();
}
if (t.AssignedTo == "Person5")
{
row["Column5"] = t.Id.ToString();
}
dt.Rows.Add(row);
}
grdTFSItems.DataSource = dt;
答案 0 :(得分:0)
您想按ID分组吗?
var idGroups = task
.Where(t => !String.IsNullOrWhiteSpace(t.AssignedTo))
.GroupBy(t => t.Id);
foreach (var idGroup in idGroups)
{
var row = dt.NewRow();
foreach (Task t in idGroup)
{
if (t.AssignedTo == "Person1")
row.SetField("Column1", t.Id.ToString());
else if(t.AssignedTo == "Person2")
row.SetField("Column2", t.Id.ToString());
else if (t.AssignedTo == "Person3")
row.SetField("Column3", t.Id.ToString());
else if (t.AssignedTo == "Person4")
row.SetField("Column4", t.Id.ToString());
else if (t.AssignedTo == "Person5")
row.SetField("Column5", t.Id.ToString());
}
dt.Rows.Add(row);
}