From: J Snaith on
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


From: Alexey Smirnov on
On Apr 4, 5:54 pm, "J Snaith" <no-s...(a)no-spam.com> wrote:
> 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

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.