Avatar billede lasserasch Juniormester
21. august 2006 - 03:30 Der er 4 kommentarer og
1 løsning

Fejl med grid håndtering i c# .net

Hejsa.

Jeg har lavet et stykke PDA software.
Det bruges til bordbestillinger mv.

Programmet har en række knapper, som indeholder produkter. F.eks. lille øl, mellem øl, mellem cola osv osv osv...

Hver gang jeg trykker på en af disse knapper, bliver produktet lagt op i et grid i toppen af skærmen.

Dette grid har felterne : antal, produkttekst, pris

Hvis et produkt ligger i griddet i forvejen, så skal den ikke tilføje en nye linie til griddet, men blot ændre antal på den eksisterende linie. F.eks. hvis der allerede er trykket en "Lille øl" ind, så skal den blot ændre antal fra 1 til 2.

Det virker sådan set fint nok, så længe at den linie man vil redigere antal i, ligger som den sidst indtastede linie.

Hvis den ikke gør det så fejler min kode.


Her er den kode, jeg bruger til at lave dette tjek med :

--------

          DataRow gridRow;
                gridRow = ReceiptGridTable.NewRow();
                gridRow["ITEMS"] = Items;
                gridRow["TEXT"] = ProductText;
                gridRow["PRICE"] = Items * Price;
                gridRow["PRODUCT_NO"] = ProductNo;
                gridRow["LINE_NO"] = LineNo;
             
                if (System.Convert.ToInt32(gridRow["LINE_NO"]) == -1)
               
                    {
                        Int32 W = 0;

                        Int32 R = ReceiptGridTable.Rows.Count;
                   
                        while (W < R)
                         
                        {

                            String text = System.Convert.ToString(RecieptGrid[W, 1]);
                         
                            if (text == System.Convert.ToString(gridRow["TEXT"]))
                            {
                                DataRow Row;
                                Row = ReceiptGridTable.Rows[R -1];
                                Int32 Litems = System.Convert.ToInt32(RecieptGrid[W,0]);
                                Double Lprice = System.Convert.ToInt32(RecieptGrid[W, 2]);
                                ReceiptGridTable.Rows.Remove(Row);
                                gridRow["ITEMS"] = Litems + System.Convert.ToInt32(gridRow["ITEMS"]);
                                gridRow["PRICE"] = Lprice + System.Convert.ToDouble(gridRow["PRICE"]);
                               
                            }
                            W = W + 1;

                        }

                    ReceiptGridTable.Rows.Add(gridRow["ITEMS"], gridRow["TEXT"], gridRow["PRICE"], gridRow["PRODUCT_NO"], gridRow["LINE_NO"]);
                                     
                    }

-----------

Den fejl jeg får hedder :

"Index 1 is either negative or above rows count."


Muligvis er det mig, som griber det forkert an. Jeg forstår ikke helt denne fejl, og håber en kan give en hjælpende hånd!

På forhånd tak!

/Lasse
Avatar billede lasserasch Juniormester
21. august 2006 - 03:33 #1
Fejlen kommer på denne linie :

String text = System.Convert.ToString(RecieptGrid[W, 1]);
Avatar billede nielle Nybegynder
21. august 2006 - 06:54 #2
Er du sikker på at dit RecieptGrid har lige så mange Rows som din ReceiptGridTable?

Dit W løber jo til:

Int32 R = ReceiptGridTable.Rows.Count

- men hvis R ikke samtidigt stemmer med værdien for RecieptGrid.Rows.Count, vil W-indekset på et eller andet tidspunkt løbe "ud over enden". Den fejlbesked du får tyder stærkt på at det er det som er problemet.
Avatar billede nielle Nybegynder
28. august 2006 - 12:49 #3
Hvad med noget respons?
Avatar billede lasserasch Juniormester
28. august 2006 - 12:56 #4
Hej nielle. Undskyld at jeg ikke har svaret endnu... Jeg fandt selv fejlen, og korrekt at det var en out of range exception, som jeg egentlig selv fandt 5 min efter jeg skrev indlægget. glemte bare at få det lukket igen!

gi' et svar, så får du bare lige de points der...

/Lasse
Avatar billede nielle Nybegynder
28. august 2006 - 20:35 #5
Svar :^)
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