Trouble With Timer

  • Thread starter Thread starter J Snaith
  • Start date Start date
J

J Snaith

Good day. I have asp.net page in vb.net that gets set of photos records
from a database table (paths to photos). Loads that data into session
datatable, divide into parts and display each part at timer interval. For
eg. every 7 seconds display first 5 (of 20) photos in asp.net datagrid, then
next set of 5, then next set of 5 photos, etcetera. When all 20 photos have
been displayed (paged) I want to show new panel for 7 seconds (pnlWarning).
Hide pnlViewPhotos and show pnlWarning. Then, start loop again and start
displaying paged photos again (in pnlViewPhotos). Then after 20 display
warning again, etcetera. I have the code working well to page photos but
cannot determine where to show pnlWarning panel and hide other panel for the
7 seconds after all photos displayed, then start displaying photos again
after 7 seconds of making pnlWarning visible=true. Could you please take
look at following code snippet and please advise where I may accomplish this
tasks? Any direction you have would be appreciate and of great help. Thank
you and have fantastic day.


'click button to start
Sub btnDisplayPagingPhotos_Click(ByVal sender As Object, ByVal e As
System.EventArgs)
Dim varPhotosID As String = 24
session("thePageSize") = 7
Timer1.Interval = 7 'seconds
GetPhotos(varPhotosID)
End Sub

Private Sub GetPhotos(ByVal photosid As String)
Dim ssql As String
Dim cnn As New SqlConnection(ConfigurationSettings.AppSettings.Get("cnn"))
cnn.Open()
ssql = "exec procGetPhotos '" & photosid & "'"

pnlViewPhotos.visible = True

session("da") = New SqlDataAdapter(ssql, cnn)
session("ds") = New DataSet
session("da").Fill(session("ds"), "photos")
session("dtPhotosSource") = session("ds").Tables("photos")

getPhotosData()

cnn.Close()
End Sub

Private Sub goToFirstSetOfPhotos()
If session("theCurrentPage") = 1 Then
Return
End If
session("theCurrentPage") = 1
session("theRecordNumber") = 0
LoadPhotos()
End Sub

Private Sub LoadPhotos()
Timer1.Interval = ddlPagingInterval.SelectedItem.Value
session("dtTemp") = session("dtPhotosSource").Clone
If session("theCurrentPage") = session("thePageCount") Then
session("endRec") = session("theMaxRecord")
Else
session("endRec") = session("thePageSize") * session("theCurrentPage")
End If
session("startRec") = session("theRecordNumber")

'if photos actually exist
Dim intCount As Integer
intCount = session("dtPhotosSource").Rows.Count
If intCount > 0 Then
Dim i As Integer
For i = session("startRec") To session("endRec") - 1
session("dtTemp").ImportRow(session("dtPhotosSource").Rows(i))
session("theRecordNumber") = session("theRecordNumber") + 1
Next
End If

dgPhotos.DataSource = session("dtTemp")
dgPhotos.Databind()
End Sub

Private Sub getPhotosData()
session("theMaxRecord") = session("dtPhotosSource").Rows.Count
session("thePageCount") = session("theMaxRecord") \ session("thePageSize")
If (session("theMaxRecord") Mod session("thePageSize")) > 0 Then
session("thePageCount") = session("thePageCount") + 1
End If
session("theCurrentPage") = 1
session("theRecordNumber") = 0
LoadPhotos()
End Sub

Private Sub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Elapsed
session("theCurrentPage") = session("theCurrentPage") + 1
If session("theCurrentPage") > session("thePageCount") Then
session("theCurrentPage") = session("thePageCount")
If session("theRecordNumber") = session("theMaxRecord") Then
session("theCurrentPage") = 1
getPhotosData()
goToFirstSetOfPhotos()
Dim varPhotosID As String = 24
GetPhotos(photosid)
Return
End If
End If
LoadPhotos()
End Sub
 
Good day.  I have asp.net page in vb.net that gets set of photos records
from a database table (paths to photos).  Loads that data into session
datatable, divide into parts and display each part at timer interval.  For
eg. every 7 seconds display first 5 (of 20) photos in asp.net datagrid, then
next set of 5, then next set of 5 photos, etcetera.  When all 20 photoshave
been displayed (paged) I want to show new panel for 7 seconds (pnlWarning).
Hide pnlViewPhotos and show pnlWarning.  Then, start loop again and start
displaying paged photos again (in pnlViewPhotos).  Then after 20 display
warning again, etcetera.  I have the code working well to page photos but
cannot determine where to show pnlWarning panel and hide other panel for the
7 seconds after all photos displayed, then start displaying photos again
after 7 seconds of making pnlWarning visible=true.  Could you please take
look at following code snippet and please advise where I may accomplish this
tasks?  Any direction you have would be appreciate and of great help.  Thank
you and have fantastic day.

'click button to start
Sub btnDisplayPagingPhotos_Click(ByVal sender As Object, ByVal e As
System.EventArgs)
Dim varPhotosID As String = 24
session("thePageSize") = 7
Timer1.Interval = 7 'seconds
GetPhotos(varPhotosID)
End Sub

Private Sub GetPhotos(ByVal photosid As String)
Dim ssql As String
Dim cnn As New SqlConnection(ConfigurationSettings.AppSettings.Get("cnn"))
cnn.Open()
ssql = "exec procGetPhotos '" & photosid & "'"

pnlViewPhotos.visible = True

session("da") = New SqlDataAdapter(ssql, cnn)
session("ds") = New DataSet
session("da").Fill(session("ds"), "photos")
session("dtPhotosSource") = session("ds").Tables("photos")

getPhotosData()

cnn.Close()
End Sub

Private Sub goToFirstSetOfPhotos()
If session("theCurrentPage") = 1 Then
Return
End If
session("theCurrentPage") = 1
session("theRecordNumber") = 0
LoadPhotos()
End Sub

Private Sub LoadPhotos()
Timer1.Interval = ddlPagingInterval.SelectedItem.Value
session("dtTemp") = session("dtPhotosSource").Clone
If session("theCurrentPage") = session("thePageCount") Then
session("endRec") = session("theMaxRecord")
Else
session("endRec") = session("thePageSize") * session("theCurrentPage")
End If
session("startRec") = session("theRecordNumber")

'if photos actually exist
Dim intCount As Integer
intCount = session("dtPhotosSource").Rows.Count
If intCount > 0 Then
Dim i As Integer
For i = session("startRec") To session("endRec") - 1
session("dtTemp").ImportRow(session("dtPhotosSource").Rows(i))
session("theRecordNumber") = session("theRecordNumber") + 1
Next
End If

dgPhotos.DataSource = session("dtTemp")
dgPhotos.Databind()
End Sub

Private Sub getPhotosData()
session("theMaxRecord") = session("dtPhotosSource").Rows.Count
session("thePageCount") = session("theMaxRecord") \ session("thePageSize")
If (session("theMaxRecord") Mod session("thePageSize")) > 0 Then
session("thePageCount") = session("thePageCount") + 1
End If
session("theCurrentPage") = 1
session("theRecordNumber") = 0
LoadPhotos()
End Sub

Private Sub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Elapsed
session("theCurrentPage") = session("theCurrentPage") + 1
If session("theCurrentPage") > session("thePageCount") Then
session("theCurrentPage") = session("thePageCount")
If session("theRecordNumber") = session("theMaxRecord") Then
session("theCurrentPage") = 1
getPhotosData()
goToFirstSetOfPhotos()
Dim varPhotosID As String = 24
GetPhotos(photosid)
Return
End If
End If
LoadPhotos()
End Sub

What is timer1 in your code? is it a regular timer control? I think it
does not work with asp.net because web application is stateless. In
order to make a "timer" working in asp.net you need to use javascript.
 
Back
Top