【发布时间】:2015-07-22 12:10:06
【问题描述】:
我正在使用 ASP.NET (C#)、MySQL。
我正在尝试通过 SQLDataSource 使用 FormView 组件提要...目标是创建一个表单来处理来自单个表的数据,而无需过多编码并尽可能多地依赖框架。
我发现了如何显示和编辑数据,但是当我来到“日期”字段时,我发现我的任务提前停止了。 因为我是意大利人,所以我使用与 MySQL 内部日期格式 (yyyy-MM-dd) 完全不同的标准“意大利”日期格式 (dd/MM/yyyy),这会在我尝试更新字段时导致日期格式错误。
包含“日期”字段的表单是这样定义的:
<asp:FormView
ID="_frmData"
runat="server"
DataKeyNames="id"
DataSourceID="_sdsContatto"
DefaultMode="Edit">
<EditItemTemplate>
<asp:Table runat="server">
<asp:TableRow>
<asp:TableCell>
<asp:TextBox
ID="_txtDate"
runat="server"
Text='<%#Bind("date_field","{0:dd/MM/yyyy}")%>' />
</asp:TableCell>
</asp:TableRow>
</asp:Table>
</EditItemTemplate>
</asp:FormView>
SQLDataSource 是这样定义的:
<asp:SqlDataSource ID="_sdsData
runat="server"
ConnectionString="<%$ ConnectionStrings:data_db %>"
ProviderName="<%$ ConnectionStrings:data_db.ProviderName %>"
SelectCommand=" SELECT
date_field
FROM
table
WHERE
id=@id;"
UpdateCommand=" UPDATE
table
SET
date_field = @date_value
WHERE
id=@id;">
</asp:SqlDataSource>
使用“意大利”日期格式会导致此错误:
不正确的日期值:第 1 行的“date_field”列的“9/12/1971”
有办法解决这类问题吗?
我尝试使用 MySQL STR_TO_DATE() 没有运气。
最好的问候任何帮助或建议。
迈克
【问题讨论】:
-
我可能会尝试将 FormView 绑定值保留为预期格式,以保持应用程序和数据库之间的功能。要处理本地格式问题,请使用 FormView 的数据绑定事件处理程序后面的代码根据您的要求重新格式化。
-
您好,您的意思是为 OnDataBound 事件定义一个处理程序,以使用“本地”格式填充文本框,然后在更新时使用 OnUpdateCommand 处理程序将文本框的内容设置为正确的格式?我想使用 UpdateParameters !?
-
正确。因此,您的日期列的值与数据库格式绑定,以保持更新和插入工作。然后,您将重写 FormView 的数据绑定处理程序中的格式,以您本地所需的格式显示它。
-
你能举个例子吗?我正在尝试找出解决方案,但对我来说仍然不清楚。
标签: c# mysql asp.net date format