2014-02-07 5 views
0

Я пытаюсь заполнить ultragrid с использованием datatable, datatable имеет 5 столбцов, в которые данные будут вставлены в соответствующую строку в зависимости от строкового значения. Проблема, которую я получаю, трудно объяснить, лучшее, что я могу объяснить, это то, что когда я вставляю данные в столбец, она создает совершенно новую строку, поэтому вы можете иметь только один столбец, заполненный в строке. Я ценю, что это не очень хорошо объяснено, поэтому извиняюсь заранее.Настройка источника Ultragrid на datatable - пустые ячейки

Я хотел бы, чтобы результаты были ниже:

Ожидаемый результат

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

@TimSchmelter Да, в основном, он сгруппирован с назначенным человеком, но я хочу, чтобы строки с многочисленными столбцами заполнялись, если вы понимаете? На данный момент он вставляет новую строку для каждой задачи. – JayH

ответ

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); 
} 
+0

Не уверен, что это правильное решение, оно по-прежнему похоже на тот же результат, что и раньше, но теперь имеет пустые строки. – JayH

+0

@JayH: это из-за ваших плохих данных образца. Все ваши столбцы содержат один и тот же идентификатор, который кажется бессмысленным. Кроме того, ваш ожидаемый результат содержит ID'sd, которые не находятся в фактическом выходе. Я предполагаю, что вы просто пропустили taks с ID = 546, но это просто сбивает с толку. Попробуйте показать лучшие образцы. Ваша модель тоже сбивает с толку, почему у вас есть одна колонка для каждого человека? Что произойдет, если когда-нибудь появится «Person6»? –

+0

Никогда не будет Person6, мы хотим получить данные только для 5 человек. – JayH

Смежные вопросы