21. august 2006 - 13:33Der er
45 kommentarer og 1 løsning
hjælp til There is no row at position
Hejsa,
Dette er på en webform.
Jeg oplever denne fejl, "There is no row at position 30. (IndexOutOfRangeException)" når jeg prøver at fylde en række med datoer, når der ikke er 31 dage i en måned (der er 31 tablecells)
Nogen som har et bud om hvordan jeg kan skrive mig ud af det, da det er en webform ,hvor man bladrer 1 måned frem eller tilbage hvor de så bliver udfyldt med datoer for indeværende måned, så hvis der er mindre en 31 dage i måneden, skal tablecell indholdet bare være blank.
Her er min kode som indsætter daoterne fra dataset som indeholder alle datoer.
for (int i = 0; i < 31; i++) { Table2.Rows[1].Cells[4 + i].Text = dataset.SpShowMonthDays[i].date.ToString("dd"); }
dataset.SpShowMonthDays[i].date 'dataset.SpShowMonthDays[i]' threw an exception of type 'System.IndexOutOfRangeException' System.DateTime {System.IndexOutOfRangeException} {"There is no row at position 30."} System.SystemException {System.IndexOutOfRangeException}
ja, jeg kan debugge hele vejen igennem til den 30 i måneden, så hvis jeg står på juni, så kommer fejlen når i = 30 f.eks står jeg i juli eller august, viser den det fint nok.
Fra debug log: Table2.Rows[1].Cells[4 + i].Text "31" string dataset.SpShowMonthDays[i].date 'dataset.SpShowMonthDays[i]' threw an exception of type 'System.IndexOutOfRangeException' System.DateTime {System.IndexOutOfRangeException} i 30 int
Så spørgsmålet er hvordan jeg får den til at smide blank i den celle som normalt ville have 31 stående, og f.eks i februar skal den smdie blank i celle 29-30-31, da der jo som regel er 28 dage i februar.
Det er alle sammen rigtig gode bud, og tror også jeg tæt på en løsning, men kan ikke lige få den sidste du skrev til at virke(sandbox)
og chaos, ja jeg får vist de måneder med 31 dage fint nok og kan bladre imellem dem uden fejlen, det bare så snart jeg når en måned med 30 dage eller mindre at jeg på den.
Synes godt om
Slettet bruger
21. august 2006 - 23:07#12
Ja, jeg kom til at klippe for meget væk:
DateTime dag = dataset.SpShowMonthDays[0].date; for (int i = 0; i < Datetime.DaysInMonth(dag.Year, dag.Month); i++) { Table2.Rows[1].Cells[4 + i].Text = dataset.SpShowMonthDays[i].date.ToString("dd"); }
prøv lige med for at sikre at den ændre månede osv som den skal.: DateTime dag = dataset.SpShowMonthDays[0].date; REsponse.write dataset.SpShowMonthDays[0].date; for (int i = 0; i < Datetime.DaysInMonth(dag.Year, dag.Month); i++) { Response.write dataset.SpShowMonthDays[i].date; }
Nå jeg er kommer videre nu, der var en løkke mere som jeg ikke havde ændret ordentligt
Nu render jeg bare ind i problemet at min Sum række bliver rykket og den bibeholder 31 i dato for tidligere måned man har bladret fra, Det kan bedre ses hvad jeg mener på dette screendump og min kode her : http://www.devzone.dk/skema.txt
Så nu er den der næsten, nu har jeg flyttet min sum hen foran datoerne så jeg nu ikke har behov for at indsætte nogen "blank" kolonne, men min udfordring er at den stadig skriver f.eks 31 ud på siden,selvom der er f.eks 30 dage, hvordan får jeg skjult dette, for så skulle jeg være klar. Screendump , indrammet med rød
Tabellen er en ASP table, med tablecells , så der hvor jeg har mine dage og datoer er er tablecells ikke generet dynamisk, så jeg smider indhold i dem via dataset.
men smid et svar, så skal i få jeres points, ved ikke lige om jeg får løst denne her inden jeg tager på 3 ugers ferie.
Synes godt om
Slettet bruger
01. september 2006 - 21:21#42
Jeg synes, det må være dr_chaos, der fortjener dem, så jeg frafalder.
Ja jeg tror den tager længden fra nabomåned, for starter jeg f.eks på september, vises der kun 30, bladre jeg så tilbage til august og frem til september igen, står der 31..
Synes godt om
Ny brugerNybegynder
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.