Мне нужно иметь возможность изменять даты начала / окончания в строке asp GridView. У меня все работает, кроме возможности обновить пустую дату. У нас есть даты начала и окончания, при этом дата начала является обязательной, но дата окончания является необязательной, поэтому, когда они отображаются в строке GridView, дата окончания просто пуста, если ничего не было введено, но когда они обновляют строку, я хочу поле ввода даты окончания отображается как «дд / мм / гггг» (так же, как при вызове ввода даты без передачи значения), если дата окончания равна нулю. Кто-нибудь знает, возможно ли это сделать, и если нет, предложить способ обойти это? Я могу перехватить нулевое значение в FormatDate и превратить его в минимальную или максимальную дату, а затем преобразовать его обратно в нулевое, когда они обновляют строку, но это довольно грязно.
Я пытался передать пустую строку и нули, но оба вызывают сбой.
(CalendarCombo - это просто оболочка для TextBox)
<EditItemTemplate>
<cc1:CalendarCombo ID="EndDateUpdate" Nullable="True"
Value='<%# Eval("EndDate", "{0:yyyy-MM-dd}") %>'
runat="server" type="date" AutoPostBack="True"/>
</EditItemTemplate>
и
<EditItemTemplate>
<cc1:CalendarCombo ID="EndDateUpdate" Nullable="True"
Value='<%# FormatDate(DataBinder.Eval(Container.DataItem, "EndDate"))%>'
runat="server" type="date" AutoPostBack="True"/>
</EditItemTemplate>
где FormatDate (извините за VB; его старый код)
Public Function FormatDate(ByVal dateFromDb As Object) As String
If dateFromDb.GetType() Is GetType(DBNull) Then
Return Nothing
End If
Dim d As Date = CType(dateFromDb, Date)
Return d.ToString("yyyy-MM-dd")
End Function
Я бы хотел, чтобы поле даты ввода отображалось как "дд / мм / гггг", когда EndDate равен нулю / ничего.