[ASP/JS] automatisch invullen van array

Pagina: 1
Acties:

  • CaptBiele
  • Registratie: Juni 2002
  • Laatst online: 13-06 11:32

CaptBiele

No Worries!

Topicstarter
Ik heb een 3-tal select boxen, waarbij de inhoud afhankelijk van elkaar is.
Het voorbeeld heb ik van de site van nvidia. Een selectie in de linker box heeft invloed op de inhoud van de rechterboxen...
Op dit moment krijg ik de opties aangeleverd in een excel-sheet. Dus ze staan eenvoudig in 3 kolommen naast elkaar. Bijvoorbeeld:

KOLOM1--------KOLOM2 ---KOLOM3
hoofdgroep1--- groep1 ---- subgroep1
hoofdgroep1--- groep1 ---- subgroep2
hoofdgroep1--- groep2 ---- subgroep1
hoofdgroep1--- groep2 ---- subgroep2
hoofdgroep2--- groep1 ---- subgroep1
hoofdgroep2--- groep1 ---- subgroep2

enz...

Nu is het de bedoeling dat ik op een of andere manier direct een conversieslag kan maken, zodat ik niet alle opties handmatig hoef in te voeren.
Hiervoor laat ik de gebruiker zelf de opties invoeren. (het maakt niet uit waarin, het hoeft niet per se een excelsheet zijn, maar kan ook een gewone txt file of whatever zijn, als het maar niet te ingewikkeld is) Vervolgens laat ik een slim asp-loopje los op mijn data, en de select boxen zijn in één keer gevuld.

Nu wil ik graag weten hoe ik dit het beste kan bereiken, ik kan namelijk zelf geen elegante methode bedenken :?
Ik hoop dat jullie me een beetje op weg kunnen helpen.

  • André
  • Registratie: Maart 2002
  • Laatst online: 19-08 12:30

André

Analytics dude

Comma separated textfiles?

En dan in asp met left, right en mid alles uitlezen.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:56

crisp

Devver

Pixelated

Meer iets voor P&W denk ik :)

W&G --> P&W

Intentionally left blank


  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 13-01 07:19
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
<HTML><SCRIPT>
var arrayX = new Array("a","b","c");
var arrayY = new Array("d","e","f");
var arrayZ = new Array("g","h","i");

function VulSelB() {
  for (var i =document.abc.SelB.options.length; i>0; i--) {
    document.abc.SelB.options.remove(i-1);
  }
  if (document.abc.SelA.value != "") {
    for(var i=0; i<eval("array" + document.abc.SelA.value).length;i++) {
      var optie = document.createElement("OPTION");
      document.abc.SelB.add(optie);
      optie.innerText = eval("array" + document.abc.SelA.value)[i];
      optie.value = eval("array" + document.abc.SelA.value)[i];
    }
  } else {
    var optie = document.createElement("OPTION");
    document.abc.SelB.add(optie);
    optie.innerText = "Kies iets in de andere"
  }
}
</SCRIPT>
<BODY onLoad="VulSelB()">
<FORM name="abc">
<SELECT name="SelA" onChange="VulSelB()">
<OPTION>Kies iets
<OPTION value="X">X
<OPTION value="Y">Y
<OPTION value="Z">Z
</SELECT>
<SELECT name="SelB">
</SELECT>
</FORM>
</BODY></HTML>

Je moet zelf nog even de derde kolom toevoegen en het script daarvoor (of functie aanpassen) en asp de arrays laten vullen en de options voor de eerste kolom.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:56

crisp

Devver

Pixelated

_js_ schreef op 03 August 2003 @ 19:27:
[...]
Je moet zelf nog even de derde kolom toevoegen en het script daarvoor (of functie aanpassen) en asp de arrays laten vullen en de options voor de eerste kolom.
Ik denk dat TS al een script daarvoor heeft, en alleen tips zoekt hoe hij het beste vanuit een bestand met ASP de opties uit kan lezen om de HTML te genereren.
Jouw script vind ik persoonlijk een beetje ranzig door het gebruik van eval wat niet nodig is...

Intentionally left blank


  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 13-01 07:19
Voor dat asp loopje kun je zorgen dat de data is gesorteerd op kolom 1, dan op kolom 2, dan op kolom 3, dan lees je het regel voor regel in, en onthoud wat de waarden zijn van de vorige regel.

Als kolom 1 voor de nieuwe regel anders is dan maak je een nieuw element aan voor kolom 1, en je maakt een nieuwe array voor kolom 2 en een voor kolom 3, en doe je daar de waarde in van kolom 2, resp. kolom 3 van de deze regel en ga je verder met de volgende regel.

Als kolom 2 anders is voeg je een nieuw element toe aan de huidige array voor kolom 2, en maak je een nieuwe array voor kolom 3 en doet daar de waarde in van kolom 3 en ga je verder met de volgende regel.

Als kolom 3 anders is voeg je een nieuw element toe aan de huidige array voor kolom 3 en ga je verder met de volgende regel.

  • mOrPhie
  • Registratie: September 2000
  • Laatst online: 20-08 15:04

mOrPhie

❤️❤️❤️❤️🤍

Voor dit soort toepassingen zou ik zelf XML gebruiken. Je zou er dan ook een handig interface'je bij kunnen maken om deze XML op te maken. XML is op dit moment de beste en meest effeciente datahouder voor dit soort kleine toepassinkjes. :)

Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.


  • CaptBiele
  • Registratie: Juni 2002
  • Laatst online: 13-06 11:32

CaptBiele

No Worries!

Topicstarter
o, mijn excuses voor de verkeerde groep...

Ik denk dat ik het inderdaad met comma seperated values ga doen. Dat bevalt me wel.
Ik heb nog geen script geschreven, het leek me verstandiger om te wachten tot ik de echte oplossing wist.

In ieder geval bedankt _js_. Ik ga nu ff aan de slag met het scriptje, kijken hoe ver ik kom.

De XML oplossing zal ongetwijfeld de netste zijn, maar die valt helaas af....

  • CaptBiele
  • Registratie: Juni 2002
  • Laatst online: 13-06 11:32

CaptBiele

No Worries!

Topicstarter
(... ik moet ff wat cafeine binnenkrijgen...)

_js_, ik heb je scriptje ff goed bekeken, maar deze functionaliteit heb ik dus al. Het gaat er dus puur om dat het array automatisch gevuld wordt. Nu volgt een stukje code van het vullen van het array (wederom van nvidia)

Let ff niet op de benamingen van de elementen.
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var MainCategory = new Array();
MainCategory[0] = new Entry("1", "Buis");
  var SubCategory1 = new Array();
      
      SubCategory1[0] = new Entry("1_0", "soort1");
      var OperatingSystem1_0 = new Array();
          OperatingSystem1_0[0] = new Entry("1_0_1","type1");
          OperatingSystem1_0[1] = new Entry("1_0_2","SubSubBuizen02");
          OperatingSystem1_0[2] = new Entry("1_0_3","SubSubBuizen03");
          OperatingSystem1_0[3] = new Entry("1_0_4","SubSubBuizen04");
      SubCategory1[1] = new Entry("1_1", "SubBuizen1");
      var OperatingSystem1_1 = new Array();
          OperatingSystem1_1[0] = new Entry("1_1_1","SubSubBuizen11");
          OperatingSystem1_1[1] = new Entry("1_1_2","SubSubBuizen12");
          OperatingSystem1_1[2] = new Entry("1_1_3","SubSubBuizen13");
          OperatingSystem1_1[3] = new Entry("1_1_4","SubSubBuizen14");


Nu kan de gebruiker de data invoeren in een excel-sheet. Ik sla het bestand op als een csv-bestand... en filter met een loopje automatisch het array zoals het hierboven gebeurt.

  • mOrPhie
  • Registratie: September 2000
  • Laatst online: 20-08 15:04

mOrPhie

❤️❤️❤️❤️🤍

CaptBiele schreef op 04 augustus 2003 @ 10:14:

De XML oplossing zal ongetwijfeld de netste zijn, maar die valt helaas af....
Niet dat ik nu zo graag wil dat je XML gebruikt hoor. Maar waarom valt dit af? Je zegt zelf al dat het de netste oplossing is. Bovendien zijn er al zat functies in asp beschikbaar die XML-afhandeling voor je regelen. Iets wat je met comma-seperated files zelf zal moeten doen. :)

Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.


  • CaptBiele
  • Registratie: Juni 2002
  • Laatst online: 13-06 11:32

CaptBiele

No Worries!

Topicstarter
tja, het is nog niet helemaal afgeschreven, maar ik heb heel erg weinig ervaring met XML.
En er zijn ook andere personen die er mee moeten werken, dus dan houd ik het liever bij de bestaande coderingen zeg maar....
maar ik ga het thuis ff onderzoeken, misschien kies ik uiteindelijk toch voor XML :)

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Volgens mij is XML niet de juiste oplossing in deze. XML in _heel_ goed om data te transporteren, maar niet om data op te slaan (ten minste niet met de huidige parsers etc.). Een client side array werkt in dit geval heel snel.

Wat ik begrijp van CaptBiele is dat hij niet weet hoe deze clientside array te vullen?

Je kunt gewoon JavaScript 'schrijven' met ASP

DO UNTIL RS.EOF
Response.Write 'code van de JavaScript array, dynamisch gevuld met gegevens uit RS
RS.MoveNext
LOOP

Hier zijn natuurlijk heel veel variaties op, het ligt eraan hoe je de data hebt. Red je je hier mee of moet ik duidelijke zijn?

Oops! Google Chrome could not find www.rijks%20museum.nl


  • CaptBiele
  • Registratie: Juni 2002
  • Laatst online: 13-06 11:32

CaptBiele

No Worries!

Topicstarter
Ik weet wel dat ik hem kan vullen, en dat ik javascript kan schrijven met asp.
Het enige wat me nu nog rest is om een goed loopje er voor te schrijven. Ik ben nog geen asp/js guru, dus ik zal er ff de tijd voor moeten nemen...

Ik kan natuurlijk ook niet aan jullie vragen of jullie het hele script voor me willen schrijven... (het zou wel kewl zijn natuurlijk :9 )
offtopic:
ennuh.. welkom op GoT :)

[ Voor 7% gewijzigd door CaptBiele op 04-08-2003 15:10 ]

Pagina: 1