[ASP.NET 2.0] Naar 2e datagrid springen op pagina

Pagina: 1
Acties:

  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
Hallo,

Misschien hoort dit topic meer thuis is W&G maar ik probeer het eerst hier even omdat het toch ook met ASP.NET te maken heeft.

Mijn collega heeft me gevraagd om het volgende probleempje op te lossen.

We hebben een pagina met een datagrid. Deze data grid kan erg lang worden. (in een frame of div tonen is geen optie). Iedere row van de datagrid heeft een CommandField cel. Als daar op geklikt word kan er een andere datagrid onder de eerste getoont worden (soort van details veld).

Omdat de eerste datagrid nogal groot kan worden navigeert dit lastig op de pagina. Dus is mij gevraagd om bijv. dmv een een html anchor het mogelijk te maken door bij een klik op de eerste datagrid (of bij het klikken op het CommandField) naar de 2e grid te springen.

Ik heb dit op verschillende manieren geprobeerd.

oa. door een <a href="#grid2"> om de datagrid te zetten. Dit werkte helaas niet. (ik vermoed omdat de 2e datagrid nog geladen moet worden), dit werkte ook niet als ik bijvoorbeeld naar een punt op de pagina spring waar de datagrid gaat komen. De pagina gaat namelijk herladen en de 2e grid tonen dus zie je weer het bovenste gedeelte van de pagina.

Ook met onclick="document.location.href="#gid2";" werkt het niet omdat wederom bij het klikken van het CommandField de pagina opnieuw geladen word, en de focus weer naar de eerste grid springt.

Ik vermoed dat dit allemaal te maken heeft met de postbacks cq. roundtrips te maken heeft die bij het klikken plaats vinden.

Ik hoop dat iemand een mogelijke oplossing ziet/kent.

Ik denk niet dat het tonen van code nu echt relevant is maar mocht iemand meer info nodig hebben dan geef ik dat graag.

bvd

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

Staan er nog wat parameters in de querystring? Zoja, dan: page.aspx?query=string&#grid2

(extra ampersandje voor de anchor name dus). Meestal wordt een anchor pas opgezocht als de pagina geladen is, dus daar zoy het het niet aan moeten liggen. Zie je verschil in gedrag in IE en FF?

[ Voor 37% gewijzigd door Not Pingu op 15-12-2005 10:19 ]

Certified smart block developer op de agile darkchain stack. PM voor info.


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
Het gedrag lijkt hetzelfde te zijn in beide browsers (moet de document.location.href nog even testen in FF) en er staan niet meerdere vars in de querystring

Bij document.location werkt het in FF helemaal niet.

[ Voor 16% gewijzigd door 4of9 op 15-12-2005 11:11 ]

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

Ik zie nu pas dat je een anchor maakt met <a href="#bla">
Dat moet als volgt: <a name="bla">

Stupid me, TS niet goed gelezen.

[ Voor 17% gewijzigd door Not Pingu op 15-12-2005 12:48 ]

Certified smart block developer op de agile darkchain stack. PM voor info.


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
eh nou niet echt.

je anchor moet worden <a href="#Grid2"> en de plek waarnaar verwezen word moet het attribuut name="Grid2" hebben

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

Je zegt in de TS:
oa. door een <a href="#grid2"> om de datagrid te zetten
Daar maak ik uit op dat je dus wou verwijzen naar een anchor met href attribuut. Mocht ik je TS verkeerd interpreteren, dan graag wat meer info en markup. :)

Certified smart block developer op de agile darkchain stack. PM voor info.


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
ik zet de <a href="#grid2"> om grid1 zodat als je op grid1 klikt je naar grid2 (of een plek in de buurt van) springt (met name="grid2").

We zeggen volgens mij hetzelfde ;)

maar goed alvast bedankt voor je hulp...

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

Ah, op zo'n fiets. Dat gaat helaas niet werken omdat een datagrid uiteindelijk een table tag wordt en in IE levert dat quirks op als je er een <a> omheen zet. Heb het even geprobeerd, en in FF werkt het perfect, maar in IE lijkt de table idd de eigenschappen van de <a> over te nemen (inhoud wordt blauw) maar op de een of andere manier worden clicks niet opgevangen.
Ook met onclick="document.location.href="#gid2";" werkt het niet omdat wederom bij het klikken van het CommandField de pagina opnieuw geladen word, en de focus weer naar de eerste grid springt.
Je zou hier natuurlijk een redirect kunnen doen naar dezelfde URL maar dan met de #grid2 toevoeging achter de link.

Maar dit is iets dat je beter clientside kunt oplossen. Het hele eerste grid klikbaar maken is iets dat iig in IE niet gaat lukken, maar met een gewoon linkje zou het moeten werken. Moet perse het hele grid klikbaar zijn? Dat gaat sowieso problemen opleveren als je er ook nog CommandFields of andere controls in hebt staan.

[ Voor 50% gewijzigd door Not Pingu op 15-12-2005 13:52 ]

Certified smart block developer op de agile darkchain stack. PM voor info.


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
Die redirect werkt ook niet om dat door het redirecten word de eerste datagrid weer geladen en IE legt de focus dan weer bovenaan de pagina, in FF werkt het zelfs helemaal niet.

Een linkje los van de datagrid werkt wel idd, maar ik denk het op te gaan lossen met scrollIntoView() (javascript) misschien gaat dat werken.

Maandag weer een dag iig :)

thx

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


Verwijderd

Probeer eens met SmartNavigation in de @Page directive

Smart navigation is an ASP.NET feature that is supported in Internet Explorer 5.5 and later browsers. It allows a page to be refreshed while maintaining scroll position and element focus between navigations, causing only a single page to be stored in the browser's history, and without the common flicker associated with refreshing a Web page. Smart navigation is best used with ASP.NET pages that require frequent postbacks but with visual content that does not change dramatically on return. Consider this carefully when deciding whether to set this attribute to true.
Bovenstaande is niet relevant nu ik het nog een keer doorlees...

edit:

Waarom wordt hierboven zo moeilijk gedaan met de A-tag als anchor? (retorisch) :)
Gebruik gewoon het id van grid2 als anchor, dan hoef je ook niet zo moeilijk te doen.

Verander in de code op de server de link zodat deze verwijst naar de anchor grid2.ClientId en klaar...

[ Voor 20% gewijzigd door Verwijderd op 15-12-2005 23:35 ]

Pagina: 1