以下のコードを参照してください。
<asp:TemplateField HeaderText="DOB" SortExpression="dob" >
<EditItemTemplate >
<asp:TextBox ID="TextBox3" Width="60px" runat="server" Text='<%# Bind("dob", "{0:d-M-yyyy}") %>'></asp:TextBox>
<asp:CalendarExtender ID="TextBox3_CalendarExtender" runat="server" Enabled="True" Format="d-M-yyyy" TargetControlID="TextBox3">
</asp:CalendarExtender>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Text='<%# Bind("dob", "{0:d-M-yyyy}") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
dbに「dob」という名前のDateTime列があります。バインド中に「dM-yyy」でフォーマットしました。ユーザーがGridViewから直接DOBを更新する場合を除いて、すべてが完璧に機能します。
テキストボックスに日付を「dM-yyyy」形式で表示しましたが、dbサーバーでは「mm-dd-yyyy」形式として扱われるため、ユーザーがデータを更新したいときに問題が発生します。
ちなみに、サーバーはこれを発生させます:
System.FormatException: String was not recognized as a valid DateTime.
更新のコード:
UpdateCommand="update family_members_info set dob=@dob where memberID=@memberID">
<UpdateParameters>
<asp:Parameter Name="memberID" />
<asp:Parameter Name="dob" Type="DateTime" />
</UpdateParameters>
どんな助けでも大歓迎です。