Avatar billede c-sharp Nybegynder
13. marts 2007 - 15:30 Der er 6 kommentarer og
1 løsning

Gemme 2 dimensionelt array i hiddenfield

Er det muligt at gemme et 2 dimensionelt array i et hiddenfield og efter et postback så få de data tilbage i et 2 dimensionelt array? Hvis ja hvordan?
Avatar billede roenving Novice
13. marts 2007 - 15:32 #1
Du kan f.eks. emulere et json-objekt i feltet !-)
Avatar billede c-sharp Nybegynder
13. marts 2007 - 15:41 #2
Kan du give et eksempel på det?
Avatar billede roenving Novice
13. marts 2007 - 15:56 #3
F.eks.

-- du har variablen test, der er et to-dimensionelt array ...

var txtTest = "[";
for(i=0,im=test.length;im>i;i++){
  txtTest += "[";
  for(j=0,jm=test[i].length;jm>j;j++){
    txtTest += test[i][j] + jm-1 > j ? "," : "";
  }
  txtTest += "]"
}
txtTest += "]";
feltObject.value = txtTest;

-- så kan du aflæse objektet direkte med eval:

var test;
window.onload = function(){
  test = eval(document.formNavn.feltNavn.value);
}
Avatar billede c-sharp Nybegynder
13. marts 2007 - 20:20 #4
Jeg har prøvet følgende:

function test1()
        {
            test = new Array();
            test[0] = new Array();
            test[1] = new Array();
            test[2] = new Array();
           
            test[0][0] = "0,0";
            test[0][1] = "0,1";
            test[1][0] = "1,0";
            test[1][1] = "1,1";
            test[2][0] = "2,0";
            test[2][1] = "2,1";
           
            alert(test);

                var txtTest = "[";
                for(i=0,im=test.length;im>i;i++){
                  txtTest += "[";
                  for(j=0,jm=test[i].length;jm>j;j++){
                    txtTest += test[i][j] + jm-1 > j ? "," : "";
                  }
                  txtTest += "]"
                }
                txtTest += "]";
           
                alert(txtTest);
            document.forms[0].<%= test_hdn.ClientID %>.value = txtTest;           
        }

Men det output den får lavet er følgende: [[][][]]
Avatar billede c-sharp Nybegynder
14. marts 2007 - 09:29 #5
Fandt ud af det :-)

Der er åbenbart et problem med følgende linie :

txtTest += test[i][j] + jm-1 > j ? "," : "";

men hvis jeg laver på 2 linier virker det ?-)

txtTest += test[i][j];
txtTest += jm-1 > j ? "," : "";

også skulle der også lige være komma i mellem [[],[]]
så alt ialt kom jeg frem til følgende:

var txtTest = "[";
                for(i=0,im=test.length;im>i;i++)
                {
                  txtTest += "[";
                  for(j=0,jm=test[i].length;jm>j;j++)
                  {
                    txtTest += test[i][j];
                    txtTest += jm-1 > j ? "," : "";
                  }
                  txtTest += "]";
                  txtTest += im-1 > i ? "," : "";
                }
                txtTest += "]";

roenving endnu engang mange tak for hjælpen, smid et svar så er der point...
Avatar billede roenving Novice
14. marts 2007 - 09:38 #6
Argh, et gammelt problem med den ternære operator:

txtTest += test[i][j] + (jm-1 > j ? "," : "");

Velbekomme '-)
Avatar billede roenving Novice
14. marts 2007 - 10:04 #7
-- og tak for point ;~}
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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