Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    problema recordset paging

    Io ho una pagina in cui a sinistra ho un elenco di record e al centro ho il dettaglio di ogni record.
    Nell'elenco dei record a sinistra ho impostato un recordset paging che mi mostra 10 record alla volta, cliccando avanti mi mostra gli altri, e via dicendo..

    il problema è che se sono nella seconda "decina" (quindi ho gia cliccato avanti una volta), se clicco sul dettaglio di un record, l'elenco mi ritorna all'inizio, ed è scomodo perchè poi devo ripremere avanti per tornare al punto in cui ero prima, e quando ci sono tanti record è anche brutto da vedere..

    c'è un sistema per ovviare a questo problema? ovvero che l'elenco rimanga fermo?

    io uso dreamweaver e il recordset paging l'ho impostato con la funzione automatica del programma...


    grazie dell'aiuto

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Ad occhio devi passare il numero di pagina in cui ti trovi quando clicchi sul link del record.

    Roby

  3. #3
    con fatto che ho usato la funzione di dreamweaver in automatico non so dove andare a mettere le mani...


    codice:
    '  *** Recordset Stats, Move To Record, and Go To Record: declare stats variables
    
    Dim rsDati_total
    Dim rsDati_first
    Dim rsDati_last
    
    ' set the record count
    rsDati_total = rsDati.RecordCount
    
    ' set the number of rows displayed on this page
    If (rsDati_numRows < 0) Then
      rsDati_numRows = rsDati_total
    Elseif (rsDati_numRows = 0) Then
      rsDati_numRows = 1
    End If
    
    ' set the first and last displayed record
    rsDati_first = 1
    rsDati_last  = rsDati_first + rsDati_numRows - 1
    
    ' if we have the correct record count, check the other stats
    If (rsDati_total <> -1) Then
      If (rsDati_first > rsDati_total) Then
        rsDati_first = rsDati_total
      End If
      If (rsDati_last > rsDati_total) Then
        rsDati_last = rsDati_total
      End If
      If (rsDati_numRows > rsDati_total) Then
        rsDati_numRows = rsDati_total
      End If
    End If
    %>
    <%
    Dim MM_paramName 
    %>
    <%
    ' *** Move To Record and Go To Record: declare variables
    
    Dim MM_rs
    Dim MM_rsCount
    Dim MM_size
    Dim MM_uniqueCol
    Dim MM_offset
    Dim MM_atTotal
    Dim MM_paramIsDefined
    
    Dim MM_param
    Dim MM_index
    
    Set MM_rs    = rsDati
    MM_rsCount   = rsDati_total
    MM_size      = rsDati_numRows
    MM_uniqueCol = ""
    MM_paramName = ""
    MM_offset = 0
    MM_atTotal = false
    MM_paramIsDefined = false
    If (MM_paramName <> "") Then
      MM_paramIsDefined = (Request.QueryString(MM_paramName) <> "")
    End If
    %>
    <%
    ' *** Move To Record: handle 'index' or 'offset' parameter
    
    if (Not MM_paramIsDefined And MM_rsCount <> 0) then
    
      ' use index parameter if defined, otherwise use offset parameter
      MM_param = Request.QueryString("index")
      If (MM_param = "") Then
        MM_param = Request.QueryString("offset")
      End If
      If (MM_param <> "") Then
        MM_offset = Int(MM_param)
      End If
    
      ' if we have a record count, check if we are past the end of the recordset
      If (MM_rsCount <> -1) Then
        If (MM_offset >= MM_rsCount Or MM_offset = -1) Then  ' past end or move last
          If ((MM_rsCount Mod MM_size) > 0) Then         ' last page not a full repeat region
            MM_offset = MM_rsCount - (MM_rsCount Mod MM_size)
          Else
            MM_offset = MM_rsCount - MM_size
          End If
        End If
      End If
    
      ' move the cursor to the selected record
      MM_index = 0
      While ((Not MM_rs.EOF) And (MM_index < MM_offset Or MM_offset = -1))
        MM_rs.MoveNext
        MM_index = MM_index + 1
      Wend
      If (MM_rs.EOF) Then 
        MM_offset = MM_index  ' set MM_offset to the last possible record
      End If
    
    End If
    %>
    <%
    ' *** Move To Record: if we dont know the record count, check the display range
    
    If (MM_rsCount = -1) Then
    
      ' walk to the end of the display range for this page
      MM_index = MM_offset
      While (Not MM_rs.EOF And (MM_size < 0 Or MM_index < MM_offset + MM_size))
        MM_rs.MoveNext
        MM_index = MM_index + 1
      Wend
    
      ' if we walked off the end of the recordset, set MM_rsCount and MM_size
      If (MM_rs.EOF) Then
        MM_rsCount = MM_index
        If (MM_size < 0 Or MM_size > MM_rsCount) Then
          MM_size = MM_rsCount
        End If
      End If
    
      ' if we walked off the end, set the offset based on page size
      If (MM_rs.EOF And Not MM_paramIsDefined) Then
        If (MM_offset > MM_rsCount - MM_size Or MM_offset = -1) Then
          If ((MM_rsCount Mod MM_size) > 0) Then
            MM_offset = MM_rsCount - (MM_rsCount Mod MM_size)
          Else
            MM_offset = MM_rsCount - MM_size
          End If
        End If
      End If
    
      ' reset the cursor to the beginning
      If (MM_rs.CursorType > 0) Then
        MM_rs.MoveFirst
      Else
        MM_rs.Requery
      End If
    
      ' move the cursor to the selected record
      MM_index = 0
      While (Not MM_rs.EOF And MM_index < MM_offset)
        MM_rs.MoveNext
        MM_index = MM_index + 1
      Wend
    End If
    %>
    <%
    ' *** Move To Record: update recordset stats
    
    ' set the first and last displayed record
    rsDati_first = MM_offset + 1
    rsDati_last  = MM_offset + MM_size
    
    If (MM_rsCount <> -1) Then
      If (rsDati_first > MM_rsCount) Then
        rsDati_first = MM_rsCount
      End If
      If (rsDati_last > MM_rsCount) Then
        rsDati_last = MM_rsCount
      End If
    End If
    
    ' set the boolean used by hide region to check if we are on the last record
    MM_atTotal = (MM_rsCount <> -1 And MM_offset + MM_size >= MM_rsCount)
    %>
    <%
    ' *** Go To Record and Move To Record: create strings for maintaining URL and Form parameters
    
    Dim MM_keepNone
    Dim MM_keepURL
    Dim MM_keepForm
    Dim MM_keepBoth
    
    Dim MM_removeList
    Dim MM_item
    Dim MM_nextItem
    
    ' create the list of parameters which should not be maintained
    MM_removeList = "&index="
    If (MM_paramName <> "") Then
      MM_removeList = MM_removeList & "&" & MM_paramName & "="
    End If
    
    MM_keepURL=""
    MM_keepForm=""
    MM_keepBoth=""
    MM_keepNone=""
    
    ' add the URL parameters to the MM_keepURL string
    For Each MM_item In Request.QueryString
      MM_nextItem = "&" & MM_item & "="
      If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
        MM_keepURL = MM_keepURL & MM_nextItem & Server.URLencode(Request.QueryString(MM_item))
      End If
    Next
    
    ' add the Form variables to the MM_keepForm string
    For Each MM_item In Request.Form
      MM_nextItem = "&" & MM_item & "="
      If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
        MM_keepForm = MM_keepForm & MM_nextItem & Server.URLencode(Request.Form(MM_item))
      End If
    Next
    
    ' create the Form + URL string and remove the intial '&' from each of the strings
    MM_keepBoth = MM_keepURL & MM_keepForm
    If (MM_keepBoth <> "") Then 
      MM_keepBoth = Right(MM_keepBoth, Len(MM_keepBoth) - 1)
    End If
    If (MM_keepURL <> "")  Then
      MM_keepURL  = Right(MM_keepURL, Len(MM_keepURL) - 1)
    End If
    If (MM_keepForm <> "") Then
      MM_keepForm = Right(MM_keepForm, Len(MM_keepForm) - 1)
    End If
    
    ' a utility function used for adding additional parameters to these strings
    Function MM_joinChar(firstItem)
      If (firstItem <> "") Then
        MM_joinChar = "&"
      Else
        MM_joinChar = ""
      End If
    End Function
    %>
    <%
    ' *** Move To Record: set the strings for the first, last, next, and previous links
    
    Dim MM_keepMove
    Dim MM_moveParam
    Dim MM_moveFirst
    Dim MM_moveLast
    Dim MM_moveNext
    Dim MM_movePrev
    
    Dim MM_urlStr
    Dim MM_paramList
    Dim MM_paramIndex
    Dim MM_nextParam
    
    MM_keepMove = MM_keepBoth
    MM_moveParam = "index"
    
    ' if the page has a repeated region, remove 'offset' from the maintained parameters
    If (MM_size > 1) Then
      MM_moveParam = "offset"
      If (MM_keepMove <> "") Then
        MM_paramList = Split(MM_keepMove, "&")
        MM_keepMove = ""
        For MM_paramIndex = 0 To UBound(MM_paramList)
          MM_nextParam = Left(MM_paramList(MM_paramIndex), InStr(MM_paramList(MM_paramIndex),"=") - 1)
          If (StrComp(MM_nextParam,MM_moveParam,1) <> 0) Then
            MM_keepMove = MM_keepMove & "&" & MM_paramList(MM_paramIndex)
          End If
        Next
        If (MM_keepMove <> "") Then
          MM_keepMove = Right(MM_keepMove, Len(MM_keepMove) - 1)
        End If
      End If
    End If
    
    ' set the strings for the move to links
    If (MM_keepMove <> "") Then 
      MM_keepMove = Server.HTMLEncode(MM_keepMove) & "&"
    End If
    
    MM_urlStr = Request.ServerVariables("URL") & "?" & MM_keepMove & MM_moveParam & "="
    
    MM_moveFirst = MM_urlStr & "0"
    MM_moveLast  = MM_urlStr & "-1"
    MM_moveNext  = MM_urlStr & CStr(MM_offset + MM_size)
    If (MM_offset - MM_size < 0) Then
      MM_movePrev = MM_urlStr & "0"
    Else
      MM_movePrev = MM_urlStr & CStr(MM_offset - MM_size)
    End If
    %>
    questo invece è il codice settato sui link "avanti" e "indietro"

    codice:
    <% If MM_offset <> 0 Then %>
                       Indietro
              <% End If ' end MM_offset <> 0 %></td>
              <% If Not MM_atTotal Then %>
                       Avanti
               <% End If ' end Not MM_atTotal %>

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Figurati io... :master:

    Roby

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.