Avatar billede califfo Nybegynder
24. januar 2006 - 16:25 Der er 19 kommentarer og
1 løsning

Update DataGrid

Hej smølfer

Jeg har lavet et program der henter noget data ind fra en fil og smider det over i et DataGrid. Jeg har også implementeret muligheden for at redigere i denne data via en gui. Når dataen er redigeret færdig, gemmer jeg rettelserne i filen. Dette fungerer fint. Jeg kan dog ikke få opdateret mit DataGrid. Jeg ville gå ud fra at det burde være ret simpelt at gøre dette.

Jeg har bl.a. prøvet:
DataGrid_Devices.Update();
uden held. DataGrid'et bliver ikke opdateret før programmet genstartes og DataSource bindes til DataGrid. Man skulle tro at man bare kunne kalde den samme funktion, men

Nedenfor er der et udklip af min kode.

-----
        private void UpdateDevice(int indexDev, Devices Dev)
        {
            DataTable dt = ds.Tables["DeviceTable"];

            Devices prev = (Devices) DeviceObject[indexDev];

            DeviceObject[indexDev] = Dev;

            //// update gui

            DataGrid_Devices.DataSource = ds;
            DataGrid_Devices.DataMember = "DeviceTable";

            ////

            UpdateDeviceInDatabase(prev, Dev);
        }
-----

Håber det er til at finde ud af...
Avatar billede califfo Nybegynder
24. januar 2006 - 16:32 #1
Er der evt. en funktion til at cleare DataGrid'et?
Avatar billede califfo Nybegynder
24. januar 2006 - 16:35 #2
...Før jeg load'er det igen?
Avatar billede dr_chaos Nybegynder
24. januar 2006 - 16:41 #3
Du skal kalde Databind på datagriddet.
og for at slette alt kan du kalde noget lignende
DataGrid_Devices.Items.Clear();
mener jeg
Avatar billede califfo Nybegynder
25. januar 2006 - 10:48 #4
Jeg er ikke helt med på hvordan jeg skal kalde DataBind på DataGrid'et. Hvis jeg f.eks. skriver:
-----
DataGrid_Devices.
-----

...får jeg nogle forskellige valgmuligheder, men ingen af dem hedder "DataBind". Der er derimod en der hedder "DataBindings", samt en der hedder "SetDataBinding".

Jeg mener ikke det er dem jeg skal bruge. Det burde være ret simpet detteher, men jeg har bare ikke set lyset.

-----
DataGrid_Devices.Items.Clear();
-----

Findes ikke. "Items" er ikke kendt,...
Avatar billede dr_chaos Nybegynder
25. januar 2006 - 10:55 #5
du behøver ikke at fjerne items fra datagriddet.

for at opdatere datagriddet indfører du
  DataTable dt = ds.Tables["DeviceTable"];

            Devices prev = (Devices) DeviceObject[indexDev];

            DeviceObject[indexDev] = Dev;

            //// update gui

            DataGrid_Devices.DataSource = ds;
            DataGrid_Devices.DataMember = "DeviceTable";
//opdatere datagriddet
DataGrid_Devices.DataBind();

            ////

            UpdateDeviceInDatabase(prev, Dev);
Avatar billede califfo Nybegynder
25. januar 2006 - 11:05 #6
Lyder også logisk, men når jeg skriver dette, får jeg følgende fejlmeddelelse.

-----
Error 1 'System.Windows.Forms.DataGrid' does not contain a definition for 'DataBind'
-----
Avatar billede dr_chaos Nybegynder
25. januar 2006 - 11:15 #7
prøv med invalidate
  DataTable dt = ds.Tables["DeviceTable"];

            Devices prev = (Devices) DeviceObject[indexDev];

            DeviceObject[indexDev] = Dev;

            //// update gui

            DataGrid_Devices.DataSource = ds;
            DataGrid_Devices.DataMember = "DeviceTable";
//opdatere datagriddet
DataGrid_Devices.Invalidate();

            ////

            UpdateDeviceInDatabase(prev, Dev);
Avatar billede califfo Nybegynder
25. januar 2006 - 11:22 #8
Ingen fejlmeddelelse, men heller ingen effekt i DataGrid'et.
Avatar billede dr_chaos Nybegynder
25. januar 2006 - 11:25 #9
Prøv evt. med Update() eller refresh()
Avatar billede califfo Nybegynder
25. januar 2006 - 11:52 #10
Samme resultat. Meget underligt.
Avatar billede dr_chaos Nybegynder
25. januar 2006 - 12:51 #11
jeg synes ikke at jeg kan se at dit dataset bliver opdateret.
Avatar billede califfo Nybegynder
30. januar 2006 - 13:34 #12
Det har du ret i,... Jeg kan ikke helt greje hvordan det skal se ud, men placeringen kan jeg godt se. Jeg får det til at være noget i denne retning.

-----
        private void UpdateDevice(int indexDev, Devices Dev)
        {
            DataTable dt = ds.Tables["DeviceTable"];

            Devices prev = (Devices) DeviceObject[indexDev];

            DeviceObject[indexDev] = Dev;

            //// Update gui ////

            ds = EtEllerAndet

            DataGrid_Devices.DataSource = ds;
            DataGrid_Devices.DataMember = "DeviceTable";

            //// --------- ////

            // Updating database and file
            UpdateDeviceInDatabase(prev, Dev);
        }
-----
Avatar billede dr_chaos Nybegynder
30. januar 2006 - 14:38 #13
hvordan henter du normalt dit dataset ?
Avatar billede califfo Nybegynder
30. januar 2006 - 14:47 #14
ds.Tables.Add(dt);
Avatar billede califfo Nybegynder
30. januar 2006 - 14:48 #15
...Hvis jeg henter det igen, får jeg at vide at dt allerede er bundet til dette DataSet.
Avatar billede dr_chaos Nybegynder
30. januar 2006 - 15:10 #16
og hvad med din datatable ?
Avatar billede califfo Nybegynder
30. januar 2006 - 15:18 #17
DataTable dt = ds.Tables["DeviceTable"];
Avatar billede califfo Nybegynder
07. februar 2006 - 11:44 #18
Så fik jeg det til at virke. Dine svar har været stor årsag til at det lykkedes, så hvis du lige sender et svar, så får du dine point.
Avatar billede dr_chaos Nybegynder
07. februar 2006 - 12:00 #19
svar :)
Avatar billede juks Novice
25. januar 2008 - 09:05 #20
kan du ikke poste løsningen
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