选择新日期时,vb.net DatePicker未设置值

时间:2019-04-02 10:26:29

标签: sql vb.net datepicker

我正在使用vb.net应用程序(我对vb.net还是很新的),并且刚刚在表单>> vf_rem(object = Filter(f = exists, x = c("a", "b", "c"))) -> lst_res >> lst_res # Shows list >> $a NULL $c NULL 上的字段中添加了DatePicker(该字段以前只是一个文本框。

日期选择器似乎在视觉上起作用-当用户在表单字段中单击时,将显示日期选择器日历,他们可以从当前月份中选择一个日期,或切换月份以从另一个月份中选择一个日期。用户选择日期后,日历消失,新选择的日期以mm / dd / yyyy格式显示在字段中。

但是,在调试应用程序时,当我到达PostDate函数时,该函数正在处理表单中字段的更新(即检查其值是否已更改,并在数据库中更新它们)。他们有),我看到在我添加的行中检查了刚刚添加了DatePicker的date字段的更改,date变量仍然保留了先前的值(即原始日期,而不是新选择的日期) )。

UpdateButton_Click()函数的定义如下:

UpdateButton_Click()

如果我在此函数上设置一个断点并逐步执行,可以看到Protected Sub UpdateButton_Click(sender As Object, e As EventArgs) Handles UpdateButton.Click If Page.IsPostBack Then ... Dim mypostdate As String = HttpUtility.HtmlEncode(PostDate.Text & " " & theTime.Text) ... C.updateCaseByCaseID(... mypostdate, ...) ... Next End If End Sub 的值始终是其原始值(即,在页面加载时它具有先前保存的值)。即使使用日期选择器将字段的值更改为新日期,尽管该字段在浏览器中显示了新日期,但当我逐步执行此功能时,PostDate.Text的值始终是原始日期值。

PostDate.Text的调用似乎是在处理数据库更新,最初是在case.vb中用以下命令定义的:

C.updateCaseByCaseID(...)

我将Public Function updateCaseByCaseID(ByVal Caseid As String, ...) As String Dim con As New SqlConnection(connectionString) Dim sql As String = "UPDATE tableName SET " sql = sql & " ReportNumber=@ReportNumber, ... " If status = "" Then Else sql = sql & " ,status=status " End If ... If PostDate = "" Then Else sql = sql & ", PostDate=@PostDate" End If ' Other similar If Else statements for the other parameters ' ... Dim cmd As New SqlCommand(sql, con) cmd.Parameters.AddWithValue("@CID", Cid) ... cmd.Parameters.AddWithValue("@PostDate", PostDate) ' Other similar AddWithValue statements ' ... If state = "" Then Else cmd.Parameters.AddWithValue("@State", State) End If ' Other similar If statements for the other parameters ' ... con.Open() cmd.ExecuteNonQuery() con.Close() Dim myaction As String = "Done" Return myaction End Function 参数添加到了postdate变量中,方法是将该行更改为:

sql

但是,尽管现在确实会更新过帐日期字段的值,但它似乎会将其更新为今天的日期,而不是DatePicker选择的日期。这似乎是因为尽管sql = sql & " ReportNumber=@ReportNumber, ..., PostDate=@PostDate, ... 字段在浏览器中显示了新选择的日期,但在PostDate函数的第

行中
UpdateButton_Click(...)

变量Dim mypostDate As String = HttpUtility.HtmlEncode(PostDate.Text + " " + theTime.Text) (即在浏览器中显示新选择的日期的表单字段)似乎具有今天的日期值...我不明白为什么会这样...?确定它应该包含在DatePicker中选择的日期的值吗?尤其是考虑到那就是浏览器中正在显示的内容...

有人对此有何建议吗?

修改

如评论中所述,我对PostDate.Text函数进行了如下更新:

UpdateButton_Click()

我的意图是将要从String重构的新Protected Sub UpdateButton_Click(sender As Object, e As EventArgs) Hanles UpdateButton.Click If Page.IsPostBack Then ... Dim mypostdate As String = HttpUtility.HtmlEncode(PostDateTxt.Text & " " & theTime.Text) Dim postDateAndTimeParts = mypostdate.Split("/") Dim postTime = postDateAndTimeParts(2).Split("/") Dim postDay = postDateAndTimeParts(1) Dim postMonth = postDateAndTimeParts(0) Dim postYear = postDateAndTimeParts(2).Split(" ")(0) Dim postHour = postTime.Split(":")(0) Dim postMin = PostTime.Split(":")(1) DateTime PostDate = New DateTime(postYear, postMonth, postDay, postHour, postMin, 0); ... C.updateCaseByCaseID(...) End If End Sub DateTime对象传递给PostDate调用,但是在构造该对象的那一行上,我目前出现编译错误,提示:

  

方法参数必须用括号括起来

我不确定为什么会这样吗?我看不到哪里缺少括号...

0 个答案:

没有答案