在ASP.NET中使用UpdateCommand的日期fomat问题

时间:2015-05-11 20:24:36

标签: c# mysql asp.net date format

我使用的是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()而没有运气。

最好的问候任何帮助或建议。

麦克

1 个答案:

答案 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(InsertParametersUpdateParameters部分)中,我们需要通过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>