2014-10-09 4 views
1

У меня есть таблица в моей базе данных, которая указывает на «rendez-vous». У меня есть столбцы MA и Hours. Столбец MA используется, чтобы указать, является ли это утром или днем: 1 или 2, 1 для утра, 2 для второй половины дня. (Я не могу изменить базу данных).C# WPF Добавить новую пустую строку в середине datatable

Вот пример результата:

Hours | MA |Name 
10:00:00 | 1 | Robert 
10:30:00 | 1 | Jane 
11:15:00 | 1 | John 
14:00:00 | 2 | Stewart 
14:15:00 | 2 | Elton 

Я положил его в DataTable:

dt = myCon.SelectDataTable(query); 

Тогда я переплетены в список:

lstGCCCandidatCreneau.ItemsSource = dt.DefaultView; 

Но перед для этого я хотел бы вставить пустую строку между утром и днем. Я бы хотел, чтобы в списке было что-то вроде этого:

Hours | MA |Name 
10:00:00 | 1 | Robert 
10:30:00 | 1 | Jane 
11:15:00 | 1 | John 

14:00:00 | 2 | Stewart 
14:15:00 | 2 | Elton 

Могу ли я с вашей помощью?

Большое спасибо.

Alex

ответ

0

Проверить это link

 DataTable dt = SampleData(); 
     int i = dt.Rows.Cast<DataRow>().TakeWhile(dr => dr != null && dr[1].ToString() != "2").Count(); 
     DataRow toInsert = dt.NewRow(); 
     dt.Rows.InsertAt(toInsert, i); 

 public DataTable SampleData() 
     { 
      DataTable dt=new DataTable(); 
      dt.Columns.Add("Hours",typeof(string)); 
      dt.Columns.Add("MA",typeof(string)); 
      dt.Columns.Add("Name",typeof(string)); 
      dt.Rows.Add(new object[] {@"10:00:00", 1, "Robert"}); 
      dt.Rows.Add(new object[] {@"10:30:00", 1, "Jane"}); 
      dt.Rows.Add(new object[] {@"11:15:00", 1, "John"}); 
      dt.Rows.Add(new object[] {@"14:00:00", 2, "Stewart"}); 
      dt.Rows.Add(new object[] {@"14:15:00", 2, "Elton"}); 
      return dt; 

     } 
+0

Спасибо, это работает для меня, за исключением случаев, когда мой DataTable не содержит rendez-vous днем, у меня есть пустая строка в верхней части списка. – Alexking2005

+0

извините, я написал об ошибке: я имею в виду: за исключением случаев, когда данные datatable содержат только rendez vous днем. – Alexking2005

3

Может быть, вы не хотите, чтобы добавить пустую строку, и просто использовать группировку в ListBox. Вы можете увидеть образец here

Это может вызвать множество других проблем, если вы хотите использовать это в другом месте !!!

+0

У меня проблема, в моем случае это не свойство. Это столбец из базы данных. VS отображает ошибку: «В MyApp.exe произошло необработанное исключение типа« Исключение System.NullReferenceException ». – Alexking2005

+0

Arent, создающий класс Model, который реплицирует вашу базу данных, чтобы вы могли сбросить данные, когда вы их получите. Поэтому в идеале вы должны использовать шаблон MVVM, в котором у вас есть класс Model со всеми свойствами, похожими на вашу БД, и ваш ViewModel должен иметь список объектов модели. Таким образом, вы можете заполнить свой список этим, а затем привязать список к этой коллекции. – adityaswami89

+0

Мне очень нравится решение, которое вы даете, но MVVM мне совершенно неизвестно, и я не могу переписать приложение. Жаль. – Alexking2005