将Ultragrid源设置为数据表 - 空白单元格

时间:2014-02-07 13:43:22

标签: c# datatable ultragrid

我正在尝试使用数据表填充超网格,数据表有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;

1 个答案:

答案 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);
}