[javascript] Viewstate van treeview behouden*

Pagina: 1
Acties:

  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
Tsja, ik weet niet of het in dit forum kan..

probleem is als volgt:
Ik heb een lijst van onderwerpen onder elkaar staan die door een database wordt gegenereert. Indien een bezoeker op een van de onderwerpen klikt wordt een tweede lijst zichtbaar, ook uit database. Dus de 2 lijst wordt gefilterd door de eerste lijst. Geen probleem.

Voorbeeldje:
item 1
subitem 1
subitem 2
subitem 3
item 2
item 3

De lijst is echter langer dan de pagina, dus er moet worden gescrolled. Aangezien het een serverside toepassing is, schiet de pagina weer omhoog als een item wordt aangeklikt (postback naar dezelfde pagina). Aangezien de lijst langer is dan de pagina sta je na de klik op het item weer boven aan de pagina en zie je niet de uitgeklapte lijst van het item dat je hebt aangeklikt. Deze staat wel open maar dan moet je weer naar beneden scrollen.

Dus mijn vraag is:
Is het mogelijk om de positie van het scherm vast te houden zodat je het uitgeklapte menu kan zien zonder weer naar beneden te moeten scrollen? (javacscript)?
Het kan worden opgelost met ankers maar misschien zijn er ook andere oplossingen maar ik zou het totaal niet weten....

mijn dank is groot... _/-\o_

  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
Een voorbeeld van een dergelijke toepassing is te zien op:
http://www.dotnetjunkies.com/tutorials.aspx?tutorialid=681

Deze site is gemaakt in .NET maar het idee is gelijk. In deze demo wordt gebruik gemaakt van ankers...

De demo waar ik aan werk is een beveiligde toepassing..;-( Die kan ik hier helaas niet laten zien, sorry)

Verwijderd

Kun je niet gewoon bookmarks geen gebruiken ?
Of heb ik het probleem niet helemaal begrepen:)

  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
je bedoelt van die 'ankers'... ik kan natuurlijk die dingen gebruiken maar dan plaatst hij het anker boven aan de pagina en ik wil kijken of het mogelijk is om dezelfde postie te behouden....

[ Voor 5% gewijzigd door Folkert op 17-05-2003 07:57 ]


  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
Het heeft iig te maken met het behouden van de scroll positie op de pagina....

Verwijderd

Als er niet uitkomt zou je zou het dynamisch kunnen maken, dit is eist wat ik tijdje geleden voor de lol heb gemaakt in java. Je kunt hiermee serverside paginas laden/raadplegen en de informatie in een layer printen zonder een refresh.

OKe dan niet dan :) Haal het gelijke even weg, verkloot het de layout ook niet.

[ Voor 87% gewijzigd door Verwijderd op 17-05-2003 08:25 ]


  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
thanx, weet alleen niets af van java...;-(
Als ik het goed begrijp kan de inhoud van de gefilterde recordset worden getoond in een layer...

Ben bang dat ik met dergelijke scipts niet meer weet wat ik aan het doen ben....

  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
Bestaat er geen script dat het mogelijk maakt om de scrollpositie in een querystring te plaatsen en deze op de <Body onload='getScrollPosition'> op de halen?

  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
Ik het het onderstaande script gevonden maar dat werkt alleen in NS 6 & 7

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<html>
<head>
<meta http-equiv="pragma" content="no-cache" />
<script>
function queryString(sKey)
{

    var sQueryString = window.location.search

    if(sQueryString.length > 1)
         sQueryString = sQueryString.substring(1, sQueryString.length);
    else
         return null;

    var aKeyValuePairs = sQueryString.split("&");
    for(var i=0; i < aKeyValuePairs.length; i++)
    {
         if(aKeyValuePairs[i].split("=")[0] == sKey)
              return unescape(aKeyValuePairs[i].split("=")[1]);
    }
    return false;

}

function rescroll()
{
    var sScrollTop = queryString("st")
    if (sScrollTop)     document.body.scrollTop = sScrollTop
}
</script>


En de html
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
</head>
<body onload="rescroll()">
.<br />.<br />.<br />.<br />.<br />
.<br />.<br />.<br />.<br />.<br />
.<br />.<br />.<br />.<br />.<br />
.<br />.<br />.<br />.<br />.<br />
.<br />.<br />.<br />.<br />.<br />
.<br />.<br />.<br />.<br />.<br />
.<br />.<br />.<br />.<br />.<br />
.<br />.<br />.<br />.<br />.<br />
.<br />.<br />.<br />.<br />.<br />
<a href="javascript: location.href='thispage.htm?st=' + document.body.scrollTop">go</a>
</body>
</html>

  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
En het onderstaande script... maar dat werkt met een cookie...

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<script language=javascript>

function rememberPosition()
{
   SetCookie("Position", self.document.body.scrollTop );
}



function checkForNull()
{
    if( GetCookie("Position") != null )
   checkPosition();
}


function checkPosition()
{
    if(GetCookie("Position") > 200)
     askScroll();
}

function askScroll()
{
   if ( window.confirm("Do you want to scroll to last position?") )
    self.scrollTo( 0,  GetCookie("Position") );
}


// Create a cookie with the specified name and value.
// The cookie expires at the end of the 20th century.
function SetCookie(sName, sValue)
{
date = new Date();
document.cookie = sName + "=" + escape(sValue) + "; expires=Sun, 24 02 2019 23:59:59 GMT"
}

// Retrieve the value of the cookie with the specified name.
function GetCookie(sName)
{
// cookies are separated by semicolons
var aCookie = document.cookie.split("; ");
for (var i=0; i < aCookie.length; i++)
{
  // a name/value pair (a crumb) is separated by an equal sign
  var aCrumb = aCookie[i].split("=");
  if (sName == aCrumb[0]) 
    return unescape(aCrumb[1]);
}

// a cookie with the requested name does not exist
return null;
}
</SCRIPT>

  • whoami
  • Registratie: December 2000
  • Laatst online: 10:17
Als je niet zeker weet of een bepaald topic in een bepaald forum kan, dan ga je toch kijken naar de forum beschrijving, of in de FAQ?
Javascript hoort inderdaad niet thuis in Programming & Webscripting maar in Webdesign en Graphics.

P&W -> W&G.

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Bedoel je niet Smartnavigation, dat je die aan wilt hebben?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

erm...mischien handig volgende keer te editen :?.. 4 Berichten achter elkaar wordt wel erg bont :P

Verwijderd

jeetje wat een geblaat. <a href="#" onclick="lalala(); return false;">link die niet terug springt</a>

[ Voor 22% gewijzigd door Verwijderd op 18-05-2003 14:05 ]


  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
<a href="#" onclick="lalala(); return false;">link die niet terug springt</a>

De link moet juist wel een link blijven.
Door middel van de link wordt de 2e recordset gefilterd waardoor deze in de <td> wordt geopend. Het is dus een link naar dezelfde pagina

Verwijderd

ik zou dan gewoon meteen al alle info van dat menu meegeven en dan in js de dynamica regelen, hoef je ook niet iedere keer je pagina te reloaden

  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
Heb ik ook aan gedacht, ik denk dat ik ook maar die kant opga, zolang de data niet te groot qua omvang wordt...

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 12:03

RM-rf

1 2 3 4 5 7 6 8 9

als je gewoon per item een
code:
1
<a name="item4"></a>

genereert, (of nog beter, gewoon de gewenste 'delete-link' een name geven: door te geven in je function met this.name)

kun je, als je de name weet waarnaar je wilt scrollen, hiernaar scrollen dmv:
code:
1
window.location.hash = 'item4'


in je bestaande code hoef je enkel de:
code:
1
2
3
4
function rescroll(){    
   var sScrollTop = queryString("st")    
   if (sScrollTop)     window.location.hash = sScrollTop
}

waarbij in je querystring 'st' dus de name is van de gegenereerde Anchor voor je item.

dit werkt beter in browsers en is niet afhankelijk van scrollpositioning in pixels, wat een nogal om-een-hoekje-manier is van clientside programmeren.
mogenlijk kunnen er in ns4x wel problemen optreden aangezien deze nog wel moeite heeft met hashes in gepositioneerde elementen

[ Voor 12% gewijzigd door RM-rf op 19-05-2003 11:23 ]

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
Ben nu bezig om het geheel toch in de client te laden mbv het onderstaande script wat wel fijn werkt:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script type="text/javascript" language="javascript">

 var tableToggle = false;

 function toggletable() {
  var temp = document.getElementById('thistable');
  if (tableToggle) {
  tableToggle = false;
  temp.style.position = 'absolute';
  temp.style.visibility = 'hidden';
  } else {
  tableToggle = true;
  temp.style.position = 'relative';
  temp.style.visibility = 'visible';
  }
 }

 </script>


Het werkt snel en de hoeveelheid in te laden data is wel ok, dus het zorgt niet echt voor zichtbaar grotere laadtijd...
Maar ik sta altijd open voor andere opties dus ik ga zeker de optie van RM-rf bekijken!
Hoe dan ook, iedereen bedankt voor de tips en gedachtengangen!!!! _/-\o_ _/-\o_
Pagina: 1