Заполнение текстового поля на основе связанного столбца в DetailsView — проблема с нулями

Я пытаюсь заполнить дату из связанного текстового поля в DetailsView. Я продолжаю получать сообщение об ошибке, когда в столбце находится DBNull. Как избежать DBNull при заполнении текстового поля. Любая помощь в этом была бы велика в убыток.

Мой код выглядит следующим образом:

 <asp:TemplateField HeaderText="CBYD Clear Date">
              <EditItemTemplate>
                  <asp:TextBox ID="CBYDExpDate" runat="server" ReadOnly="true" Text='<%# IIf(Eval("CBYDDate") is DBNull.Value,"", String.Format("{0:MM/dd/yyyy}", Eval("CBYDDate").AddDays(30)))%>' />                                                      
          </EditItemTemplate>
    </asp:TemplateField>

person sleath    schedule 17.01.2011    source источник


Ответы (1)


Проще всего было бы определить функцию в программном коде, которую вы вызываете:

Text='<%# getDateText(Eval("CBYDDate"),"{0:MM/dd/yyyy}", 30) %>'

и в коде:

 Protected Function getDateText(ByVal value As Object, ByVal dateFormatString As String, ByVal addDays As Int32) As String
     If value Is Nothing OrElse value Is DBNull.Value Then
         Return String.Empty
     ElseIf TypeOf value Is Date Then
         Dim d As Date = DirectCast(value, Date)
         Return String.Format(dateFormatString, d.AddDays(addDays))
     Else
         Return value.ToString
     End If
 End Function

Для получения дополнительной информации см. MSDN.

person Tim Schmelter    schedule 17.01.2011