gpt4 book ai didi

asp.net - LinqDataSource 和日期时间格式

转载 作者:行者123 更新时间:2023-12-01 12:01:29 25 4
gpt4 key购买 nike

我正在尝试创建一个 LinqDataSource 以绑定(bind)到 ASP.NET 表单中的 DropDownList。我只想根据日期显示元素(这是数据库中的字段之一)。

基本上,我要显示的元素是 future 会发生的元素(即在 DateTime.Now 之后)。

我正在尝试以下标记:

<asp:DropDownList runat="server" ID="DropDownList1" 
AppendDataBoundItems="True" DataSourceID="LinqDataSource1"
DataTextField="TextField" DataValueField="ValueField">
</asp:DropDownList>
<asp:LinqDataSource ID="LinqDataSource1" runat="server"
ContextTypeName="DataContext1" TableName="Table"
Where="DateField &gt;= @DateField">
<WhereParameters>
<asp:Parameter DefaultValue="DateTime.Now" Name="DateField"
Type="DateTime" />
</WhereParameters>
</asp:LinqDataSource>

当我尝试运行它时,出现格式异常,提示“该字符串未被识别为有效的日期时间”。但是,我的数据库中的日期似乎没问题,因为 DateTime.Parse 在它们上运行得很好。 DateField 是 SQL 中的 datetime 类型。

我在这里错过了什么?

谢谢!

最佳答案

DefaultValue 是其他人建议的代码错误。

但是,将 DefaultValue 设置为

 "<%# DateTime.Now %>"

就像 Andomar 建议的那样(这会使标记看起来像这样:

<WhereParameters>
<asp:Parameter DefaultValue="<%# DateTime.Now %>" Name="DateField" Type="DateTime" />
</WhereParameters>

也不会工作,因为 DataBinding 表达式仅在具有 DataBinding 事件的对象上受支持,ParameterControlParameter 都没有。

对于字符串,创建文本框或标签并将 <%# %> 表达式放入新字段的值中相当容易(更多详细信息 here ),但使用 DateTime 会稍微复杂一些值,因为将 SQL DateTime 与 .NET DateTime 进行比较会导致异常。

可以很容易地在 Page_Load 事件中使用

DataContext DataContext1 = new DataContext();

var c = from a in DataContext1.Field
where a.DateField >= DateTime.Now
select a;
DropDownList.DataSource = c;
DropDownList.DataBind();

关于asp.net - LinqDataSource 和日期时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/915694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com