2015-12-21 2 views
0

Я пытаюсь обновить атрибут внутри набора данных, который затем отображается в datagrid. Однако, когда я пытаюсь назначить дату своей строке. ItemArray [0], похоже, она не обновляется. Не в отладке или в datagrid.Изменение данных набора данных для datagrid

DataSet ds = new DataSet(); 
connection.Open(); 
adapter.Fill(ds); 

foreach (DataTable table in ds.Tables) 
{ 
    foreach (DataRow row in table.Rows) 
    { 
     string date = row.ItemArray[0].ToString(); 
     date = date.Remove(date.Length - 12); 
     row.ItemArray[0] = date; 

     foreach (object item in row.ItemArray) 
     { 
      // read item 
      //Console.WriteLine(item.ToString()); 
     } 
    } 
} 
ds.AcceptChanges(); 
invoicesDataGrid.AutoGenerateColumns = true; 
invoicesDataGrid.ItemsSource = ds.Tables[0].DefaultView; 
+0

вы не можете сделать это таким образом .. Вам нужно назначить фактическую строку [0] [0 ] = date – MethodMan

+0

@MethodMan: Надеюсь, что невозможно изменить коллекцию во время итерации. –

+0

На самом деле это возможно, я просто сделал это, и он сработал. Я отправлю свой ответ через минуту. Мне нужно быстро отправиться на встречу. – MethodMan

ответ

0

измените свой код на нижеследующий. вам не нужно, что многие вложенная Еогеасп петли

DataSet ds = new DataSet(); 
connection.Open(); 
adapter.Fill(ds); 
DataTable table = ds.Tables[0]; 

foreach (DataRow row in table.Rows) 
{ 
    for (int i = 0; i < row.ItemArray.Length; i++) 
    { 
     string date = row.ItemArray[0].ToString(); 
     date = date.Remove(date.Length - 12); 
     string val = row[i].ToString(); 
     row[i] = date; 
     Debug.WriteLine("oldValue: {0}, newValue: {1}", val, row[i].ToString()); 
    } 
} 
invoicesDataGrid.AutoGenerateColumns = true; 
invoicesDataGrid.ItemsSource = table.DefaultView; 
+0

Это почти то же самое, что и раньше, с меньшими циклами. Единственная проблема с этим кодом - цикл for. Поскольку он уже в строке, мне нужно только изменить строку [0] всегда, для каждой строки. Несмотря на это, это все еще не работает. По-прежнему нет обновления, когда я вижу его в datagrid. – Pat

+0

Возможно ли, чтобы наборы данных имели типы данных для столбца. строка [0], например, выводится из базы данных как dateTime, я думаю. Значит, это означает, что я не могу поместить строку в этот столбец? – Pat

1

сделать свой запрос на выборку, как показано ниже

select cast(yourdatecolumnName as date) As date from yourtableName 
+0

Я думаю, что вы хотите удалить время с даты time.above запрос используется полностью для этого –

+0

Мне нужно запустить это через odbc. Приведение не дает мне только дату. ' "SELECT CAST (Sales.InvoiceDate в качестве даты), дата, Sales.OutstandingBalance, Sales.InvoiceStatusID, Cards.Name" + "от продаж INNER JOIN карт на Sales.CardRecordID = Cards.CardRecordID" +«, где продажи .InvoiceStatusID = 'O' AND Sales.InvoiceDate> = '"+ startDate +"' AND Sales.InvoiceDate <= '"+ endDate +"' " +" ORDER BY Sales.InvoiceDate DESC; " ' – Pat

+0

У вас теперь есть правильная 'дата'? –

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