Avatar billede gobbles Nybegynder
24. april 2004 - 02:38 Der er 4 kommentarer og
1 løsning

hente værdier ud af et dataGrid?

Hej jeg har et dataGrid(MX2004) med 2 kolonner og og 24 rækker fyldt med variabler fra ASP og MySql, fint nok.
Når nu Hr. Jensen får lyst til at klikke på mit dataGrid, hvorledes får jeg de 2 værdier fra den række han har valgt at klikke i ud.... (hvor som helst)
Jeg har prøvet at oprette et listener Object men kan kun trække rækkens nummer ud(vha. getSelectedIndex), ikke værdien skrevet inde i cellen(selv om jeg prøver med getSelectedItem(s)).
Jeg håber der sidder en opvakt natteravn som mig med et godt svar..

Tak
Avatar billede barklund Nybegynder
24. april 2004 - 14:23 #1
import mx.controls.DataGrid;
import mx.controls.gridclasses.DataGridColumn;
var my_grid:DataGrid;
my_grid.addColumn(new DataGridColumn("navn"));
my_grid.addColumn(new DataGridColumn("alder"));
my_grid.addItem({navn: "Morten", alder: 22});
my_grid.addItem({navn: "Mads", alder: 21});
my_grid.addItem({navn: "Hans", alder: 30});
my_grid.addItem({navn: "Peter", alder: 4});
my_grid.addItem({navn: "Anders", alder: 78});
var listener:Object = new Object();
my_grid.addEventListener("change", listener);
my_grid.multipleSelection = true;
listener.change = function():Void {
    var i:Number;
    trace("length of selection: "+my_grid.selectedItems.length);
    for (i = 0; i < my_grid.selectedItems.length; i++) {
        trace("select["+i+"] = "+my_grid.selectedItems[i].navn+" => "+my_grid.selectedItems[i].alder);
    }
    //trace(my_grid.selectedIndex);
}

Gætter på du selv kan gennemskue, hvad der skal til :)

Altså, selectedItems er et array af objekter magen til dem, som jeg oprettede mine rows med - som altså har en navn og en alder attribut :)

// Morten Barklund
Avatar billede gobbles Nybegynder
25. april 2004 - 18:03 #2
Tak Morten, jeg truede mit flash program med at installere frontpage og swish...hvor efter den gav mig denne løsning på mirakuløs vis..

myListener = {};
myListener.cellPress = function(evt) {
    trace(evt.target.selectedItem.Tidspunkt;)
    trace(evt.target.selectedItem.Pladser;)
};
mailList.addEventListener("cellPress", myListener);

Og det er ikke mere end man kan ha i en pose..
men tak for dit svar..
Avatar billede barklund Nybegynder
25. april 2004 - 18:06 #3
Hvorfor ikke som mig bruge en change-listener og gennemløbe objekterne i selectedItems arrayet? Det giver vel det samme :)

Men okay, tak for points :)
Avatar billede gobbles Nybegynder
25. april 2004 - 18:13 #4
Lige i dette tilfælde er det lang lettere for mig at bruge navnet på min kolonne, da den altid hedder det sammen som i MySql basen en for løkke ville være "gråspurve med kanoner" på denne måde for jeg tidspunkt og pladser smidt direkte ind i de variabler jeg skal bruge, din er nok bedre hvis jeg havde 15 kolonner..men jeg har kun 2.
men en god tråd nu kan andre selv vælge...så har vi da gjort noget for det ellers lidt vanskelige dataGrid...
Avatar billede barklund Nybegynder
25. april 2004 - 18:19 #5
Hvis du ikke har multipleSelection slået til, så behøver du jo ikke en for-løkke, da selectedItems vil være et array af kun et element. Derfor vil du på præcis samme måde kunne tilgå dine variabler som:

myListener = {};
myListener.change= function(evt) {
    trace(evt.target.selectedItem.Tidspunkt;)
    trace(evt.target.selectedItem.Pladser;)
};
mailList.addEventListener("change", myListener);

Eller via selectedItems:

myListener = {};
myListener.change= function(evt) {
    trace(evt.target.selectedItems[0].Tidspunkt;)
    trace(evt.target.selectedItems[0].Pladser;)
};
mailList.addEventListener("change", myListener);

Det skulle jeg da absolut mene :)

Uden multipleSelection er det dog ligemeget, men hvis denne var slået til, så ville cellPress jo også blive kaldt, hvis man valgte en fra, men det ville jo ikke betyde, at den netop trykkede cell var valgt.

Jeg ville nok bruge change i stedet for, men sådan er der jo så meget.

// Morten Barklund
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I dag 21:00 Libre Office Impress Af Frank i Andre styresystemer
I dag 11:47 VB script Af Jenshentze i Word
I dag 11:21 Popup ved opstart Af mort1 i Windows
04/0918:50 Slet lokal konto Af ErikHg i Windows
04/0916:05 Ændre tal i en celle Af xvid i Excel