DataSource からの DateTime を示す TemplateField 列を持つ GridView があります。
<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.String' に変換できません.DateTime' エラーは、自分のコードではなく GridView によって生成されます。私の DataSource の UpdateMethod が呼び出される前に発生します。
「 01-31-2012 」と入力すると、データが正しく処理され、値がデータベースに更新されます。
どういうわけか、日付が表示されるとき、それはdd-MM-yyyy の形式を使用します(私が必要とするのと同じように) しかし、TextBox から新しい値を読み取るときは、MM-dd-yyyyを使用します
誰か助けてくれませんか?