我有一个带有 TemplateField 列的 GridView,它显示来自数据源的 DateTime。
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:TemplateField HeaderText="Start Date">
<EditItemTemplate>
<asp:TextBox ID="txtDateStart" runat="server"
Text='<%# Bind("dtDateStart", "{0:dd/MM/yyyy}") %>'</asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server"
Text='<%# Bind("dtDateStart", "{0:dd/MM/yyyy}") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
以正确的格式显示日期可以正常工作。请注意,格式以 DAY 开头,后跟 MONTH。
当我切换到编辑模式时,将 TextBox 中的日期更改为“ 31-01-2013”并按 GridView 的更新链接我收到一个错误: 无法将参数“dtDateStart”的值从“System.String”转换为“System” .DateTime' 该错误是由 GridView 生成的,而不是我自己的代码。它发生在我的 DataSource 的 UpdateMethod 被调用之前。
当我输入“01-31-2012”时,数据被正确处理,值被更新到数据库中。
不知何故,当显示日期时,它使用格式dd-MM-yyyy(就像我需要的那样)但是当它从 TextBox 中读取新值时,它使用MM-dd-yyyy
有人能帮帮我吗?