Prev: Red TransparencyKey Not Working on Non Development Computer
Next: Object disposal guidance needed
From: J Snaith on 4 Apr 2010 11:54 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 12 Apr 2010 17:24 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.
|
Pages: 1 Prev: Red TransparencyKey Not Working on Non Development Computer Next: Object disposal guidance needed |