Jag har bl a en column i min Gridview som heter Antal timmar.
Datatypen duoble.
Nu försöker jag på mitt amatörmäsigasätt att räkna ihop antal timmar.
int gridAntal = GridView1.Rows.Count;
double summa = 0;
for (int i = 0; i < gridAntal; i++)
{
summa +=Convert.ToDouble(GridView1.Rows[1].Cells[5].Text);
}
LTotal.Text = summa.ToString() + " " + gridAntal.ToString();
Det här blir galet på många punkter.
GridView1.Rows.Count räknar bara det jag ser dvs om jag har paging på
(vilket jag har) då blir ju det missvisande.
Trots att jag har summan i samma datatyp så räknar den kanonfel. Inget stämmer och inga decimaler.
Är det fel att försöka göra så här?
Hur bör jag göra?
Är det fel att försöka göra så här?
Hur bör jag göra?
Nu orkar jag inte läsa länken som CatZ hänvisar till, så där står säkert hur du skall göra. Men jag kör en variant på svenska också :)
Double är ingen exakt datatyp, du kommer alltid få en massa konstiga decimaler som kan spöka till det för dig, i ditt fall så rör det sig säkert inte om några jättefel, så det borde inte märkas, men om man börjar räkna med tusendels decimaler och använder double så kan det bli problem, därför bör du använda dig av datatypen decimals istället.
Du bör inte plocka värdet från det som visas i din gridview eftersom de värden säkert är avrundade för att se bra ut på skärmen, utan du skall plocka de från din datakälla istället. Så om du har bundit ett dataset till gridviewn så är det datasetet som du skall loopa igenom och hämta ut information ifrån. Men men men....
Eftersom du har paging så kommer du endast få med en delmängd av din data, så det är direkt fel att göra så som du gör om du vill ha den totala antalet timmar på all data. Det måste så fall lösas i SQL satsen.
Summa sumarum, ändra i SQL-satsen så du får med en kolumn med summan av alla timmar i din data. Har du kört MS "klicka-gissa-spring" variant, så kan det säkert vara jobbigt att gå in och ändra i SQL-satsen, men om du skrivit SQL satsen själv så är det ju inga större problem, så därför håller vi oss ifrån MS "klicka-gissa-spring" exempel...
Tack Gladh för ditt utömmande svar. Naturligtvis så har jag fel datatyp, suck men det
är ju bara att ändra på.
CatZ länk gav lite värdefull info om hur man kan skriva till footer, det har jag letat
efter.
Efter att ha exprimenterat en hel del, så har jag också kommit fram till att jag måste
ta fram min information via sql. Jag får göra som jag gjorde tidigare en dynamisk
sql. Svaren beror ju på inställningarna i dropdownlitor och radiolitor.
JAg är inte så duktig att jag kan skriva mina sql:er ur huvudet, så jag fuskar,
jag änvänder mig av Access och gör en fråga. Oftast så blir det hyfsat bra.
Bara en liten fråga till, hur kan man sätta aling via codebehind?
e.Row.Cells[1].HorizontalAlign.
Det går inte att sätta left/right här, någon som vet?
Tack för nu.