テーブルに日付フィールド(smalldatetime)があり、特定の場合、日付フィールドをnullに設定する必要があります。現在、sqlparameter.valueプロパティを日付に設定する場合
endDateParam.Value = "5/15/2011"
フィールドは適切な日付で更新されます。ただし、
endDateParam.Value = System.DbNull.Value
フィールドを更新しません。
背後にあるコード:
Protected Sub ...
For Each r As GridViewRow In gvEmployees.Rows
SqlDataSource1.UpdateCommand = "<stored proc>"
SqlDataSource1.UpdateCommandType = SqlDataSourceCommandType.StoredProcedure
setParameters(r)
gvEmployees.UpdateRow(r.RowIndex, False)
Next
End Sub
Private updateParameters As New List(Of SqlParameter)()
Protected Sub setParameters(ByVal r As GridViewRow)
updateParameters.Clear()
Dim endDate As TextBox = TryCast(r.FindControl("txtEndDate"), TextBox)
Dim endDateParam As New SqlParameter("@enddate", SqlDbType.SmallDateTime)
endDateParam.Direction = ParameterDirection.Input
endDateParam.Value = System.DBNull.Value
updateParameters.Add(endDateParam)
End Sub
Protected Sub Sqldatasource1_Updating(ByVal source As Object, ByVal e As SqlDataSourceCommandEventArgs)
e.Command.Parameters.Clear()
For Each p As SqlParameter In updateParameters
e.Command.Parameters.Add(p)
Next
End Sub
アップデート
endDateParam.Value = System.Data.SqlTypes.SqlDateTime.Null
まだフィールドを更新していないようです。エラーは返されません。