[ASP.NET] 3 geneste gridviews

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • DenDries
  • Registratie: Januari 2006
  • Laatst online: 21-09 07:44
Hallo,

Met de hulp van dit artikel probeer ik zelf een uitklapbare, geneste gridview te maken.

De bedoeling is dat er 3 gridviews zijn, adhv deze structuur:
Domeinen (1ste gridview) bevatten criteria (2de gridview) die op hun beurt ook subcriteria (3de gridview) kunnen bevatten.

Ik heb daarom de code in het artikel aangepast om tot de volgende structuur te bekomen:
Afbeeldingslocatie: http://www.degendt.com/modeltw.png

Op bovenstaande afbeeldingen zijn alle zaken uitgeklapt waarbij dat mogelijk is. Het werkt niet zoals het hoort, elk 'id' heeft nl. volgende code erachter zitten die soms elkaar overlapt...

javascript:expandcollapse('div3','one') --> Dit overlapt voor 'Wat is zijn kennis van het onderwijssysteem' en 'karakter vd persoon' waardoor deze niet goed in/uitklappen.

In mijn .aspx heb ik dus de 3 gridviews in elkaar genest, met hierbij de stukjes code die van belang zijn:
JavaScript:
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
     <script language="javascript" type="text/javascript">
         function expandcollapse(obj, row) {
             var div = document.getElementById(obj);
             var img = document.getElementById('img' + obj);

             if (div.style.display == "none") {
                 div.style.display = "block";
                 if (row == 'alt') {
                     img.src = "minus.gif";
                 }
                 else {
                     img.src = "minus.gif";
                 }
                 img.alt = "Sluit om andere domeinen te tonen.";
             }
             else {
                 div.style.display = "none";
                 if (row == 'alt') {
                     img.src = "plus.gif";
                 }
                 else {
                     img.src = "plus.gif";
                 }
                 img.alt = "Klap uit om criteria te tonen.";
             }
         } 
    </script>


En in GridView1 en 2 zit er in elke itemtemplate deze code. (wel natuurlijk 'domeinid' aangepast naar 'criteriaid' voor de 2de GridView')
ASP:
1
2
3
4
5
6
7
8
9
10
....
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <a href="javascript:expandcollapse('div<%# Eval("domeinid") %>', 'one');">
                            <img id="imgdiv<%# Eval("domeinid") %>" alt="Domeinen tonen of verbergen"<%# Eval("domeinid") %>"  width="9px" border="0" src="plus.gif"/>
                        </a>
                    </ItemTemplate>
                </asp:TemplateField>
...


En dit in de .cs erachter gebruik ik dit:
ASP:
1
2
3
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
.....
ClientScript.RegisterStartupScript(GetType(), "Expand", "<SCRIPT LANGUAGE='javascript'>expandcollapse('div" + ((DataRowView)e.Row.DataItem)["domeinid"].ToString() + "','one');</script>");


en
ASP:
1
2
3
protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e)
.....
ClientScript.RegisterStartupScript(GetType(), "Expand", "<SCRIPT LANGUAGE='javascript'>expandcollapse('div" + ((DataRowView)e.Row.DataItem)["criteriaid"].ToString() + "','one');</script>");


Het probleem is volgens mij dat sommige elementen dezelfde naam vertonen waardoor de javascript niet correct functioneert. (De subcriteria is namelijk niet zichtbaar in de gridview, maar een kijkje in de broncode van de webpagina toont dat hij wel aanwezig is...)

Weet er iemand waar het precies fout gaat? Het aanpassen van de code in de GridView2_RowDataBound naar bv. 'expandcollapse2('div2" lijkt ook niet de oplossing.

Bedankt

[ Voor 159% gewijzigd door DenDries op 15-04-2011 13:56 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
DenDries schreef op donderdag 14 april 2011 @ 22:04:
Ziet er soms iemand waar het mis gaat?
Niet meer in ieder geval ;)

Als je code post, beperk je dan tot relevante delen van de code. Niemand gaat hier door 132 + 177 = ruim 300 regels code zitten spaaien op zoek naar een probleem dat je zelf ook kunt pinpointen als je een beetje moeite doet. Je moet met wat debugwerk makkelijk het probleem kunnen lokaliseren binnen een paar regels code.
DenDries schreef op donderdag 14 april 2011 @ 22:04:
Is er evt een probleem met de javascript waardoor het uitklappen niet goed lukt?
Wat heb je zelf al geprobeerd? Heb je al gedebugged? (Debuggen: Hoe doe ik dat?).

Ik lees in je topic eigenlijk alleen maar "dit wil ik" en "dit lukt niet" en "het lukt niet goed". Ik mis je eigen inzet en een duidelijke omschrijving van wat er dan niet (goed) lukt. Zie daarvoor ook onze Quickstart

Bij deze dan ook het vriendelijke verzoek je topicstart even aan te vullen zodat deze voldoet aan voorgenoemde quickstart. Je kunt daar de edit knop ( Afbeeldingslocatie: http://tweakimg.net/g/forum/images/icons/edit.gif ) voor gebruiken.

[ Voor 35% gewijzigd door RobIII op 14-04-2011 22:13 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • DenDries
  • Registratie: Januari 2006
  • Laatst online: 21-09 07:44
Sorry, het was inderdaad niet zo netjes!

Ik heb het topic wat aangepast, hopelijk is het nu duidelijker :)