webForumDet fria alternativet

Summera rad i GridView

4 svar · 508 visningar · startad av freddyk

freddykMedlem sedan okt. 2006103 inlägg
#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 ;)

freguzMedlem 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)

freddykMedlem 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?

PMedlem 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?

freddykMedlem 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...

126 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)