|
|
|
Как синхронизировать?
|
|||
|---|---|---|---|
|
#18+
Есть простецкая страница (ASP). Код простой (пример из книги почти). Код работает. Суть в постраничном разбиении большого кол-ва записей из VIEW. В код сначала можно даже не вникать. Основное внизу. <% @Language = "VBScript" %> <% Response.Expires=0 %> <HTML> <HEAD> <META name="VI60_DefaultClientScript" Content="VBScript"> <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"> </HEAD> <BODY> <% 'Выбор страницы Select Case Request.QueryString("Direction") Case "" Session("CurrentPage")=1 Case "Next" Session("CurrentPage")=Session("CurrentPage")+1 Case "Previous" Session("CurrentPage")=Session("CurrentPage")-1 End Select 'Константы Const adKeyset=1 'Переменные Dim objConn dim objRec Set objConn=Server.CreateObject("ADODB.Connection") objConn.Open "ADS" Dim strSQL strSQL="Select * from VJOtklAvar order by dt_otkl DESC" 'Создаем набор данных Set objRec=Server.CreateObject("ADODB.Recordset") objRec.PageSize=10 objRec.Open strSQL,objConn,adKeyset objRec.AbsolutePage=CLng(Session("CurrentPage")) 'Выводим результаты %> <P>Страница <%=Session("CurrentPage")%> из <%=objRec.PageCount%></P> <TABLE WIDTH=75% BORDER=1 CELLSPACING=0 CELLPADDING=0> <TR> <TH>Первый столбец</TH> <TH>Второй столбец</TH> <TH>Третий столбец</TH> </TR> <% dim i For i=1 to objRec.PageSize %> <TR> <TD><%=objRec("dt_otkl")%></TD> <TD><%=objRec("dt_vvod")%></TD> <TD><%=objRec("name_ul")%></TD> </TR> <% objRec.MoveNext Next %> </TABLE> <!--Cсылка на след. страницу --> <% If CLng(Session("CurrentPage")) >=1 Then %> <P><A HREF="Paging_Records.asp?direction=Next">Следующая страница</A></P> <%End If%> <!--Cсылка на предыдущую страницу --> <% If CLng(Session("CurrentPage"))>1 Then %> <P><A HREF="Paging_Records.asp?direction=Previous">Предыущая страница</A></P> <%End If%> <% objRec.Close objConn.Close Set objRec=Nothing Set objConn=Nothing %> </BODY> </HTML> Дело в след. При нажатии на ссылку "След. страница" можно перейти на N страниц вперед. При нажатии на "Пред. страница" так же хорошо переходим назад к ПЕРВОЙ странице. Однако, если сейчас (находясь на первой стр.) нажать на стандартную кнопку "Обновить" на панели IE, то появляется след.: Тип ошибки: ADODB.Recordset (0x800A0BB9) Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another. /ADS_NEW/Paging_Records.asp, line 37 (прим. моё: objRec.AbsolutePage=CLng(Session("CurrentPage")) ) Происходит потому что кнопка навигации "Назад" (IE) до сих пор активна. Если ее сейчас нажимать то появляется N-ная (последняя напр. №8 или №50 неважно) выбранная страница, затем ПЕРВАЯ. Сейчас стандартная кнопка IE "ОБНОВИТЬ" работает без ошибки. И стандартные кнопки навигации деактивизированы. Получается какое то параллельное отслеживание выбранных страниц. С помощью собственно программы (ASP) и параллельно браузером что ли? Как это разрулить? Или синхронизировать? Заранее спасибо. Т.к. сегодня возможно уже не будет возможности ответить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2002, 13:53:08 |
|
||
|
Как синхронизировать?
|
|||
|---|---|---|---|
|
#18+
После нажатия на ссылку "Следующая страница" у вас в браузере в адресе формируется URL "http://...Paging_Records.asp?direction=Next", по direction=Next берётся след. страница рекордсета. При нажатии кнопки F5 этот URL запускается повторно с указанным параметром direction=Next, при этом берётся след. страница. Разрулить очень просто, надо сбрасывать параметр. В вашем случае в начале ASP надо поместить след. код. 'Выбор страницы if Request.QueryString("Direction").count > 0 then Select Case Request.QueryString("Direction") Case "" Session("CurrentPage")=1 Case "Next" Session("CurrentPage")=Session("CurrentPage")+1 Case "Previous" Session("CurrentPage")=Session("CurrentPage")-1 End Select Response.Redirect "Paging_Records.asp" end if ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2002, 14:23:34 |
|
||
|
Как синхронизировать?
|
|||
|---|---|---|---|
|
#18+
Большое спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2002, 14:31:30 |
|
||
|
Как синхронизировать?
|
|||
|---|---|---|---|
|
#18+
Пример то из книжки (я даже знаю, из какой, сам читал :), но в реальности очень нездорово хранить номер страницы в session. У себя я передаю номер страницы в качестве параметра, а не direction. И от асповской разбивки на страницы мне пришлось отказаться. Теперь разбиваю средствами сиквела. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2002, 17:14:29 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32070188&tid=1818646]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
8ms |
get forum data: |
7ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 351ms |

| 0 / 0 |
