【问题标题】:long date format to short date in WPFWPF中的长日期格式到短日期
【发布时间】:2014-01-09 03:48:19
【问题描述】:

尝试将 Shortdate 列表设置为 Datagrid.ItemsSource

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

它在 DataGrid 中以“3/25/2011 12:00:00 AM”格式显示日期
我只需要日期,而不是时间,所以我的当前 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() 方法,并且该方法无法转换为存储表达式。

【问题讨论】:

  • 你试过用谷歌搜索异常吗?每当您尝试从 SQL 调用不转换为 SQL 知道的方法的方法时,都会发生这种情况。

标签: c# wpf linq


【解决方案1】:

尝试执行不带ToString() 的LINQ 语句,将结果保存到中间变量。

然后在分配给网格之前操纵结果。看看这是否有效:

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

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

我猜你在网格中显示的不止这些,但我只能从你包含的代码中猜到。

【讨论】:

  • 试过了,我得到这个错误:无法将方法组分配给隐式类型的局部变量
【解决方案2】:

我建议您不要将完美的 DateTime 转换为字符串来格式化它。

相反,通过适当地配置 DataGrid,利用在 WPF 中最晚可能时刻进行格式化的能力。

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

需要注意的重要事项:

  • 指定列上的绑定具有您提供的任何对象列表的单个实例的上下文。所以在这种情况下,我们绑定到您的 Date 属性。
  • Binding 上有一个名为 StringFormat 的属性,它可以完全满足您的要求。它与您在 ToString() 调用中放置的任何格式相同。

请注意,我实际上并没有机会将上述 XAML 塞入项目以验证其是否有效,因此可能存在拼写错误。

【讨论】:

  • 嗨,我尝试了这种方法,但我使用的是 Telerik datagrid,它显示信息为空白,因此整个 Datagrid 被“填充”但条目为空白。 stackoverflow.com/questions/21023836/…
  • 我从那个问题中看到,您最终设法将所有内容都整理好了。很棒。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多