webForumDet fria alternativet

Summera rad i GridView

.NET

4 svar · 510 visningar · startad av freddyk

Medlem sedan okt. 2006103 inlägg
Frågan#1

Tjena

Skapar en liten faktura-generator på en webbsite. Lägger upp fakturarader i en gridview för utskrift och export. Men skulle vilja få ned en totalsumma i footern på gridviewen. Lyckas inte med det.

Har skapat funktioner som räknar ihop summor och totalsummor men kan inte få ut det i footern. Inget visas.

  //Beräknar radtotal
    protected decimal get_Amount(string price, string quantity)
    {
        decimal Amount;
        decimal pris = Convert.ToDecimal(price);
        int antal = Convert.ToInt32(quantity);
        Amount = (pris * antal);
        OrderTotal = (OrderTotal + Amount);
        return Amount;
    }
//Beräknar totalten på fakturan
    protected decimal get_Faktura_Total()
    {
        return FakturaTotal;
    }

Anger FakturaTotal i början av cs-filen. Kallar på RowDataBound vid laddning av GVn

protected void gvFakturaRader_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            // add the UnitPrice and QuantityTotal to the running total variables
            priceTotal += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem,"Pris"));
            quantityTotal += Convert.ToInt32(DataBinder.Eval(e.Row.DataItem,"Antal"));
        }
        else if (e.Row.RowType == DataControlRowType.Footer)
        {
            e.Row.Cells[0].Text = "Totalt:";

            e.Row.Cells[1].Text = priceTotal.ToString("c");
            e.Row.Cells[2].Text = quantityTotal.ToString("d");
            
            e.Row.Cells[1].HorizontalAlign = e.Row.Cells[2].HorizontalAlign = HorizontalAlign.Right;
            e.Row.Font.Bold = true;
        }
    }

Har ngn gjort ngt liknande tidigare? Lösning? Kan tänka att det är som en shoppingvagn.... :)

Tacksam för all hjälp. Krisar ihop här ;)

Medlem sedan feb. 2005280 inlägg
#2

Ser ju bra ut, men har du testat at trace.write ut dina värden på lite olika ställen? alternativt köra debug så ser man ju oxå alla värden?

Enda jag undrar över är koden där du deklarerar priceTotal, bör väl vara protected (gissar lite)

Medlem sedan okt. 2006103 inlägg
#3

freguz skrev:

Ser ju bra ut, men har du testat at trace.write ut dina värden på lite olika ställen? alternativt köra debug så ser man ju oxå alla värden?

Enda jag undrar över är koden där du deklarerar priceTotal, bör väl vara protected (gissar lite)

Mjo. Vet inte om jag hänger på här men är den inte det?

Nedan visar jag för att summera raderna i Gvn...

//I GVn
<asp:TemplateField>
                                    <HeaderTemplate>Summa</HeaderTemplate>
                                        <ItemTemplate>
                                            <asp:Label ID="lblSumma" Visible='<%# !(bool) IsInEditMode %>' runat="server" Text='<%# get_Amount(Eval("Pris"),Eval("Antal")) %>' />                                            
                                        </ItemTemplate>                                        
                                        <ItemStyle HorizontalAlign="Left" VerticalAlign="Top" Width="400px" />                                       
                                    </asp:TemplateField>

Men jag får följande felmeddelande...
"The best overloaded method match for 'nyfaktura.get_Amount(string, string)' has some invalid arguments"

Vad kan vara fel?

Medlem sedan jan. 20012 204 inlägg
#4

Eval("Pris") och Eval("Antal") ger säkert något annat än string då. Eval ger den typ som objektet är så om det är en double eller int och då försöker anropa get_Amount(string,string) så blir det fel.
Vad är det för typer i databasen?

Medlem sedan okt. 2006103 inlägg
#5

ah ok. Det är ju int i databasens SP. Ska testa detta... Tack för tipset P!

Tillägg:

Det fungerade tyvärr inte. hmm... Samma problem...

253 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)