Avatar billede jan_h Nybegynder
08. maj 2013 - 12:30 Der er 4 kommentarer og
1 løsning

web form application , create read update delete

Hej
Igang med et skole projekt og har svært ved at få "update" delen til at virke. Bruger Visual Studio 2012 Express.

Jeg har 3 dataklasser, 1 parentclass "Person.cs" som er abstract. Og så 2 child klasser "Agent.cs" og "Scoundrel.cs". De har begge en masse variables som de arver fra Person.

Create og Read delen fungerer fint.
Her er et uddrag fra update.aspx.cs som driller (Agent objektet skabes fint, det er selve det at gemme den opdaterede version over den gamle version som driller)


            Agent myAgent = new Agent(
                txtAgentFirstName.Text,
                txtAgentLastName.Text,
                txtAgentCodename.Text,
                Convert.ToInt32(txtAgentPassport.Text),
                txtAgentNationality.Text,
                txtAgentCountry.Text,
                Convert.ToInt32(txtAgentZipcode.Text),
                txtAgentCity.Text,
                txtAgentAddress.Text,
                Convert.ToInt32(txtAgentHeight.Text),
                DropDownListHairColorAgent.SelectedValue,
                DropDownListEyeColorAgent.SelectedValue,
                txtAgentSpecialMarkings.Text,
                txtAgentGroupAssociation.Text,
                txtAgentPhotoFilename.Text,
                Convert.ToInt32(txtAgentPersonelNumber.Text),
                licencesArrayList
                );
           
            //find matching agent object in the agentArrayList
            for(int i=0; i < (Application["MyAgent"] as ArrayList).Count; i++)
            {
                Agent agentInList = (Application["MyAgent"] as ArrayList)[i] as Agent;

                if (myAgent._Id == agentInList._Id)
                {
                    //overwriting whatever content input form for
                    //agent has filled in, in the corresponding
                    //agent object already saved in agentArrayList

                    //saving the work to the application object ["MyAgent"]
                    Application.Lock();
                    (Application["MyAgent"] as ArrayList)[i] = myAgent;
                    Application.UnLock();
                }
            }           
            ClearTextBoxes(formCreateMaster);
Avatar billede runesoft Nybegynder
08. maj 2013 - 12:46 #1
Får du sat _Id på myAgent?
Avatar billede jan_h Nybegynder
08. maj 2013 - 12:50 #2
Ah ja det er vel der problemet ligger! Jeg har nemlig ikke nogen set metode på _Id men kun get.

Måden _Id bliver sat er:

private static int _nextId;
private int _id;
this._id = System.Threading.Interlocked.Increment(ref _nextId);

Så jeg skal vel lave en set metode på _Id som kan bruges til at sætte _Id på myAgent før det overskriver det eksisterende objekt.
Avatar billede runesoft Nybegynder
08. maj 2013 - 13:07 #3
Ja, det kan jo bare være en private setter du kalder fra contructoren.

Hvis jeg var dig ville jeg også lave en variabel til at indeholde Application["MyAgent"]. Det vil gøre koden nemmere at læse.
Avatar billede jan_h Nybegynder
08. maj 2013 - 13:18 #4
Mit problem er nu bare at jeg skal have fundet et måde at hente det Id for det nuværende viste objekt man vil ændre på. Jeg viser nemlig kun Id'et et sted. Og det er i en dropdownlist for når man skal vælge hvilket objekt (Agent/Scoundrel) man vil se.

Og denne værdi i dropdownlist indeholder ikke kun Id men også Firstname og Lastname.

F.eks. "1 : Vesper Lynd".

Så jeg ved ikke hvordan jeg får hevet 1 tallet ud, det kan jo også være på 2 eller 3 cifre. Har før prøvet at hive det ud med nogle regex match expressions, men kunne ik få det til at virke. Er der en bedre/nemmere måde?
Avatar billede jan_h Nybegynder
08. maj 2013 - 13:32 #5
nvm fik det til at virke.
Lavede bare en private int i selve klassen "update.aspx.cs" som blev sat når jeg viste et objekt.

Denne variabel værdi kunne jeg så læse senere når jeg skulle matche det opdaterede objekt med det eksisterende objekt
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
Kurser inden for grundlæggende programmering

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