Binding a date field in InsertItemTemplate fails
I'm using a GridView/DetailsView combo to view, edit and insert records. It appears to work for most fields, but I can't get past a problem on a value that is a date. My access db has the field set as DateTime, and the input is coming thru a simple textbox. I can view fields that already exist, and I can change dates quite easily, but every time I try to insert a new record, I get a null date being passed.
Is this not supported for dates? What am I doing wrong? (I've really trimmed the code back in the following example to make it easier to debug.)
<asp:DetailsView AutoGenerateRows="False"
ID="DetailsView1" runat="server"
EnableViewState="True"
CssClass="admintable"
Width="350"
Cellpadding="3"
Cellspacing="0"
Font-Name="Arial, Helvetica, sans-serif"
Font-Size="12px"
DataKeyNames="Rec_ID" DataSourceID="AccessDataSourceDetails"
HeaderText="Event Details"
OnItemInserting="DetailsView1_ItemInserting"
OnItemUpdated="DetailsView1_ItemUpdated"
OnItemInserted="DetailsView1_ItemInserted"
>
<HeaderStyle BackColor="#dddddd"
Font-Bold="True"
Font-Size="11"
HorizontalAlign="Center" />
<FooterStyle BackColor="#666666" Font-Bold="True" HorizontalAlign="Center" />
<Fields>
<%-- Event Name --%>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="EventName" Runat="Server" Text='<%# Eval("Name") %>' />
</ItemTemplate>
<EditItemTemplate>
<asp:textbox id="EventName" runat="server"
TextMode="SingleLine" Columns="35" text='<%#Bind("Name")%>' />
</EditItemTemplate>
<InsertItemTemplate>
<asp:textbox id="InsertEventName" runat="server"
TextMode="SingleLine" Columns="35" text='<%#Bind("Name")%>' />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
runat="server" ControlToValidate="InsertEventName"
ErrorMessage="Event Name is missing">*
</asp:RequiredFieldValidator>
</InsertItemTemplate>
</asp:TemplateField>
<%-- Event Date --%>
<asp:TemplateField HeaderText="Event Date">
<ItemTemplate>
<asp:Label ID="EventDateLabel" Runat="Server"
Text='<%# Eval("Date1", "{0:d}") %>' />
</ItemTemplate>
<InsertItemTemplate>
<asp:textbox id="InsertEventDate" runat="server"
TextMode="SingleLine" Columns="10" Text='<%# Bind("Date1", "{0:d}") %>' />
<asp:RequiredFieldValidator ID="RequiredFieldValidator2"
runat="server" ControlToValidate="InsertEventDate"
ErrorMessage="Event Date is missing">*
</asp:RequiredFieldValidator>
<asp:CustomValidator id="CustomValidator1" runat="server"
ControlToValidate="InsertEventDate"
OnServerValidate="ServerValidateED"
Display="Static"
ErrorMessage="Event Date is invalid">*
</asp:CustomValidator>
</InsertItemTemplate>
<EditItemTemplate>
<asp:textbox id="EditEventDate" runat="server"
TextMode="SingleLine" Columns="10" Text='<%# Bind("Date1", "{0:d}") %>' />
<asp:RequiredFieldValidator ID="RequiredFieldValidator3"
runat="server" ControlToValidate="EditEventDate"
ErrorMessage="Event Date is missing">*
</asp:RequiredFieldValidator>
<asp:CustomValidator id="CustomValidator2" runat="server"
ControlToValidate="EditEventDate"
OnServerValidate="ServerValidateED"
Display="Static"
ErrorMessage="Event Date is invalid">*
</asp:CustomValidator>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="True" ShowInsertButton="True" ShowDeleteButton="True" />
</Fields>
</asp:DetailsView>
<asp:AccessDataSource ID="AccessDataSourceDetails" runat="server"
datafile="~/App_Data/WVEvents.mdb"
SelectCommand="SELECT * FROM [EventHH] WHERE ([Rec_id] = @Rec_id)"
UpdateCommand="UPDATE EventHH SET Name=@Name, Date1=@Date1
WHERE Rec_ID = @Rec_ID"
InsertCommand="INSERT INTO EventHH (Name,TrueEvent,Date1) VALUES (@Name,True,@Date1)"
>
<SelectParameters>
<asp:ControlParameter ControlID="GridView1" Name="Rec_id" PropertyName="SelectedValue"
Type="String" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="Name" Type="String" />
<asp:Parameter Name="Date1" Type="DateTime" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="Name" Type="String" />
<asp:Parameter Name="TrueEvent" Type="Boolean" />
<asp:Parameter Name="Date1" Type="DateTime" />
</InsertParameters>
</asp:AccessDataSource>
|