Avatar billede naxosnaxos Nybegynder
02. december 2002 - 21:35 Der er 4 kommentarer og
1 løsning

problemer med opdatering af datagrid

Hej

Jeg har et datagrid som får data via en adapter/dataset. Når jeg så bruger in place editing for at ændre i værdierne har jeg problemer. I updatecommand eventhandleren for griddet, laver jeg en hasChanges på datasettet, men får bare returneret FALSE, selv om jeg lige har ændret noget. Jeg laver denne kontrol, da der ellers ikke er nogen ide at opdater databasen. jeg har gemt mit dataset og adapter i SESSION variabler. nogen der kan give en mulig årsag hvorfor jeg ikke får TRUE ved ændringer?? eller der der kommet en drille nisse i koden ;o)
Avatar billede midas_dk Nybegynder
03. december 2002 - 12:32 #1
Hejsa,
Er du sikker på at der sker ændringer i dit DataSet, når du ændrer et tekstfelt på klientsiden? Jeg tror det ikke...

Jeg "plejer" bare at sige at ved klik på f.eks. "Gem", undersøger jeg kun om den pågældende DataGrid Row er ny (= INSERT) eller opdateret (= UPDATE), og tilretter min SQL efter det...
Avatar billede naxosnaxos Nybegynder
03. december 2002 - 13:56 #2
Jeg bruger et dataset til at fylde mit grid med. Derfor vil jeg mene efter læsning af utallige eksempler at jeg kan bruge HasChanges på datasettet. Jeg har haft det til at virke men af en eller anden grund virker det ikke længere ;o(. Og nej det lader jo ikke til at der sker i ændring i datasettet, når jeg ændrer i data via in place editing, ellers ville jeg jo få returneret true. Men kan dette mon være disablet på en eller anden måde????
Avatar billede naxosnaxos Nybegynder
03. december 2002 - 13:57 #3
Forsat->->->->
HasChanges undersøger nemlig om der er ændringer i ens dataset. Når man retter i griddet er det så ikke datasettet man har fat i???
Avatar billede snepnet Nybegynder
04. december 2002 - 14:57 #4
Hvis du arbejder med windows-forms er det rigtigt at de ændringer du laver i dit datagrid normalt reflekteres i dit dataset. hvis du arbejder med et datagrid på en webform bliver du nødt til (on postback) at hente de indtastede værdier og opdatere datasettet med dem manuelt (feks. ds.Tables[0].Rows[0][5]=((TextBox)datagrid1.items[0].Cells[0]).Controls[1].Text.

Hvis du benytter det forberedte edit/cancel/update i forbindelse med editering af værdier i griddet bliver det så noget i retning af nedenstående:
//i din upatefunktion
ds.Tables["SampleTable"].Rows[e.Item.ItemIndex][1]=((TextBox)datagrid1.items[0].Cells[4]).Controls[1].Text;

tag dig ikke af de indexes jeg har angivet... det er bare grebet ud af luften - på nær den sidste (Controls[1] i din tabelcelle vil typisk være din tekstbox.

Dette er selvfølgelig en meget direkte, og meget lidt general måde at gøre det på, men du kan da starte med det :o)

hvorvidt der er kommet en drillenisse i din kode ved jeg ikke... du har jo ikke vist os den :o)
Avatar billede naxosnaxos Nybegynder
19. marts 2005 - 15:05 #5
lukker mit gamle gamle spg sorry
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