我为长线道歉。
我很惊讶为什么这段代码不能正常工作。
请看一看。
在标记上,
<asp:TemplateField HeaderText="Action">
<ItemTemplate>
<asp:Button ID="cancelBtn" style="width:105px;padding:5px;margin:5px;" runat="server" CommandName="delete" OnDataBinding="btnDelete_DataBinding" OnClientClick='return confirm("Are you sure you want to delete this entry?");' Text="Cancel Training" />
</ItemTemplate>
</asp:TemplateField>
然后我有一个名为getDateDifference()
As Boolean 的函数,代码如下:
Private Function getDateDifference() As Boolean
Dim username = Session("Username")
Dim myConnectionString As [String] = ConfigurationManager.ConnectionStrings("DBConnectionString").ConnectionString
Dim myConnection As New SqlConnection(myConnectionString)
myConnection.Open()
Dim cmd1 As New SqlCommand("select DateDiff(dd,GetDate(),d.trainingDates) as DaysCount " & _
"from tblTrainings t Inner Join tblCourses c on t.courseId = c.courseId " & _
"Inner Join tblLocations l on t.locationId = l.LocationId " & _
"Inner Join tblTrainingDates d on t.dateid=d.dateid " & _
"Inner Join tblCourseInstructor ic on c.courseId = ic.CourseId " & _
"Inner Join tblInstructors i on ic.instructorId = i.instructorId " & _
"Inner Join tblLogin lg on t.username = lg.username where lg.username = @username", myConnection)
cmd1.Parameters.AddWithValue("@username", username)
Dim dr1 As SqlDataReader = cmd1.ExecuteReader()
If dr1.Read() Then
Dim DaysCount As Integer = dr1("DaysCount")
Response.Write(DaysCount)
If DaysCount >= 2 Then
Return True
Else
Return False
End If
End If
Return False
End Function
该函数在下面调用:
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim btn As Button = DirectCast(e.Row.FindControl("cancelBtn"), Button)
btn.Enabled = Not getDateDifference()
End If
End Sub
我们要做的就是将培训日期与当前日期进行比较。
如果当前日期在培训日期的 24 小时(或 2 天)内,则已注册课程的用户无法取消该课程。
如果当前日期比培训日期早 2 天,用户可以取消。
为了测试,我在我的帐户上安排了 2 次培训。
一个培训日期是 2013 年 6 月 22 日
另一个培训日期是 2013 年 6 月 29 日。
当我运行上面的查询时,我分别得到 1 天和 8 天。
这是正确的,因为今天的日期是 2013 年 6 月 21 日,即距离第一次培训日期 2013 年 6 月 22 日还有一天,距离第二次培训日期 2013 年 6 月 29 日还有 8 天。
这意味着在我的应用程序(请参阅屏幕截图)上,我希望看到一个按钮被禁用而另一个按钮被启用。![在此处输入图像描述][1] 正如您从屏幕截图中看到的那样,这并没有发生。无论培训日期是什么,两者都处于启用或禁用状态。
当我尝试使用 response.write (DaysCount) 调试 DaysCount 时,它显示11。
不知道这是怎么发生的。自从我一直在努力解决这个问题以来,至少已经有 3 天了。
数据库是 sql server 2005。但是生产数据库是 2008。
提前感谢你的帮助。