Convertir ASP.NET contrôle de zone de texte .contenu de texte de format de Date/Heure

Je suis en train de les insérer dans une base de données - les diverses informations sur un événement. L'asp.net zone de texte est à l'aide du Calendrier Extender (donc un peu de calendrier pop-up et remplit la zone de texte avec une date formatée). Le EventDate champ dans ma base de données Access est de type Date/Heure. J'ai besoin de convertir le texte/chaîne de format de date/heure

J'ai essayé jusqu'à présent:

VB:

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim oleDbConn As New OleDb.OleDbConnection(ConfigurationManager.ConnectionStrings("BookMeetConnString").ConnectionString)
Dim SqlString As String = "Insert into Events(EventTitle,EventDescription,EventDate,EventCategory) Values
(@f1,@f2,@f3,@f4)"
Dim cmd As OleDbCommand = New OleDbCommand(SqlString, oleDbConn)
Dim strDate As String = tb_eventdate.Text
Dim dtfi As New System.Globalization.DateTimeFormatInfo
dtfi.ShortDatePattern = "dd/MM/yyyy"
dtfi.DateSeparator = "/"
Dim objDate As DateTime = Convert.ToDateTime(strDate, dtfi)
cmd.CommandType = CommandType.Text
cmd.Parameters.AddWithValue("@f1", tb_eventtitle.Text)
cmd.Parameters.AddWithValue("@f2", tb_eventdescription.Text)
cmd.Parameters.AddWithValue("@f3", tb_eventdate.Text)
cmd.Parameters.AddWithValue("@f4", dd_eventcategory.Text)
oleDbConn.Open()
cmd.ExecuteNonQuery()
System.Threading.Thread.Sleep("2000")
Response.Redirect("~/calendar.aspx")
End Sub

Voici mon code côté client juste pour la référence:

 <h1>Add An Event!<ajaxToolkit:ToolkitScriptManager
ID="ToolkitScriptManager1" 
runat="server">
</ajaxToolkit:ToolkitScriptManager>
</h1>
<p>Title of Event:
<asp:TextBox ID="tb_eventtitle" runat="server"></asp:TextBox>
</p>
<p>Event Description:
<asp:TextBox ID="tb_eventdescription" runat="server"></asp:TextBox>
</p>
<p>Event Date:
<asp:TextBox ID="tb_eventdate" runat="server"></asp:TextBox>
<ajaxToolkit:CalendarExtender ID="tb_eventdate_CalendarExtender" runat="server" 
TargetControlID="tb_eventdate">
</ajaxToolkit:CalendarExtender>
</p>
<p>Event Category:
<asp:DropDownList ID="dd_eventcategory" runat="server" 
DataSourceID="SqlDataSource1" DataTextField="CategoryTitle" 
DataValueField="CategoryTitle">
</asp:DropDownList>
</p>
<p>
<asp:Button ID="Button1" runat="server" Text="Submit" />
</p>

Quand j'essaie de remplir le formulaire, je reçois cette erreur:

Convertir ASP.NET contrôle de zone de texte .contenu de texte de format de Date/Heure

Mes Deux questions sont:

  1. Quel est le problème avec le code ci-dessus, et comment puis-je utiliser avec succès la classe DateTimeFormatInfo à convertir en Chaîne de caractères Date/Heure?
  2. Sur une note de côté, le Calendrier Extender entrées de la date dans la zone de texte en Américain Time format (JJ/MM/AAAA), comment puis-je changer cette Britannique (JJ/MM/AAAA) format (je ne pouvais pas voir une évidente à la propriété dans la boîte de dialogue propriétés pour ce faire?)

Merci d'avance pour vos réponses!

Adam

EDIT: mis à Jour le code ci-dessous:

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim oleDbConn As New OleDb.OleDbConnection(ConfigurationManager.ConnectionStrings("BookMeetConnString").ConnectionString)
Dim SqlString As String = "Insert into Events(EventTitle,EventDescription,EventDate,EventCategory) Values
(@f1,@f2,@f3,@f4)"
Dim cmd As OleDbCommand = New OleDbCommand(SqlString, oleDbConn)
cmd.CommandType = CommandType.Text
cmd.Parameters.AddWithValue("@f1", tb_eventtitle.Text)
cmd.Parameters.AddWithValue("@f2", tb_eventdescription.Text)
cmd.Parameters.AddWithValue("@f3", DateTime.ParseExact(tb_eventdate.Text, "dd/MM/yyyy",
CultureInfo.InvariantCulture))
cmd.Parameters.AddWithValue("@f4", dd_eventcategory.Text)
oleDbConn.Open()
cmd.ExecuteNonQuery()
System.Threading.Thread.Sleep("2000")
Response.Redirect("~/calendar.aspx")
End Sub
InformationsquelleAutor adaam | 2013-04-06