2014-01-09 113 views
0

試圖設置Shortdate列表爲Datagrid.ItemsSource長日期格式短日期在WPF

var query = from loan in Loans 
      select new {Date = loan.StatusCommittedDate} 
DataGrid.ItemsSource = query.ToList(); 

它顯示在「3/25/2011 12:00:00 AM」格式的日期在DataGrid
我只需要日期,沒有時間,所以我現在的LINQ是

var query = from loan in Loans 
      select new {Date = loan.StatusCommittedDate.ToString()} 
DataGrid.ItemsSource = query.ToList() 

這顯示「2011-03-25」格式這是我想要的。因此,Linq查詢有效,但將其輸入到數據網格中是錯誤的,如果我能得到一些指導。當我嘗試通過WPF中的Datagrid顯示信息時,出現此錯誤

LINQ to Entities不識別方法System.String ToString()方法,並且此方法無法轉換爲存儲表達式。

+2

你試過用google搜索例外嗎?當你嘗試從SQL調用一個不轉換爲SQL知道的方法的方法時,就會發生這種情況。 –

回答

0

嘗試執行不含ToString()的LINQ語句,將結果保存爲中間變量。

然後在分配給網格之前處理結果。看看這個工程:

var dates = (from loan in Loans 
      select loan.StatusCommittedDate).ToList(); 

DataGrid.ItemsSource = query.Select(d => d.ToString()).ToList(); 

我猜你在你的網格中顯示比這更多,但它是所有我可以從你已經包括了代碼猜測。

+0

試過,我得到這個錯誤:不能分配方法組到隱式類型的局部變量 – user2785177

+0

確保你寫了'ToList()' - 而不是'ToList'。 –

0

我建議你不要把你的完美的DateTime轉換成一個字符串來格式化它。

取而代之的是,通過適當地配置DataGrid,利用WPF內部最新時刻格式化的能力。

<DataGrid AutoGenerateColumns="False" > 
    <DataGrid.Columns> 
     <DataGridTextColumn 
      Header="Status Committed Date" 
      Binding="{Binding Date, StringFormat=yyyy-mm-dd}"/> 
    </DataGrid.Columns> 
</DataGrid> 

要注意的重要的事情:在指定的列

  • 的綁定有您所提供的對象列表中的任何一個單一實例的背景下。所以在這種情況下,我們綁定到您的Date屬性。
  • 綁定上有一個名爲StringFormat的屬性,它將完成您想要的操作。它與您在ToString()調用中放置的任何格式相同。

請注意,我並沒有真正得到一個機會,以堵塞上述XAML到項目,以驗證它的工作原理,所以有可能是拼寫錯誤。

+0

嗨,我試過這種方法,但我使用telerik datagrid,它顯示的信息空白,所以整個Datagrid是「填充」,但空白條目。 http://stackoverflow.com/questions/21023836/telerik-radgridview-wont-display-dates – user2785177

+0

我從這個問題看到,你最終設法得到所有的東西。優秀。 –