我使用的是ASP.NET(C#),MySQL。
我试图通过SQLDataSource使用FormView组件源...目标是创建一个表单来处理来自单个表的数据,而无需太多编码并尽可能地依赖于框架。
我找到了如何显示数据并进行编辑但是当我来到“约会”时。在我的任务中,我发现了一个早期停止。 因为我是意大利人,所以我使用标准的意大利语'日期格式(dd / MM / yyyy)与MySQL内部日期格式(yyyy-MM-dd)完全不同,当我尝试更新字段时,这会导致日期格式错误。
包含'日期'的表格。字段以这种方式定义:
<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>
使用&#39; italian&#39;日期格式导致此错误:
日期值不正确:&#39; 9/12/1971&#39;对于列&#39; date_field&#39;在第1行
有解决此类问题的方法吗?
我试着使用MySQL STR_TO_DATE()而没有运气。
最好的问候任何帮助或建议。
麦克
答案 0 :(得分:0)
解决方案转入&#39;分离&#39;数据提交的可视化。为了缩短这个问题,最好的方法是解决这个问题:
<asp:FormView
ID="_fvData"
runat="server"
DataKeyNames="id"
DataSourceID="_sdsTable1"
DefaultMode="Insert" Width="100%">
<InsertItemTemplate>
<asp:TextBox
ID="_txtDate"
runat="server"
Text='<%#Eval("date_field","{0:dd/MM/yyyy}")%>' />
</InsertItemTemplate>
</asp:FormView>
在sqldatasource(InsertParameters
或UpdateParameters
部分)中,我们需要通过ControlParameter
条目引用该字段,这样:
<asp:SqlDataSource
ID="_sdsTable1"
runat="server"
InsertCommandType="StoredProcedure"
InsertCommand="create_table1">
<InsertParameters>
<asp:ControlParameter
Name="date_field"
ConvertEmptyStringToNull="true"
Type="DateTime"
ControlID="_fvData$_txtDate"
PropertyName="Text" />
</InsertParameters>
</asp:SqlDataSource>