webForumDet fria alternativet

skriva ut på skärm data som saldo !=0

.NET

6 svar · 714 visningar · startad av annasmurf

Medlem sedan mars 2006237 inlägg
Frågan#1

hej!

någon som vet hur jag skriver ut på skärmen de som har saldo !=0
just nu får jag all data
saldot är inte en kolumn utan en uträkning från två andra kolumner

protected void ButtonGetInvoices_Click2(object sender, EventArgs e)
    {
        Order order = new Order();
        OrderSchema orderSchema2 = order.GetData();
        
        if (orderSchema2.Order.Rows.Count > 0)
            {
                Faktura faktura = new Faktura();
            
                FakturaSchema fakturaSchema2 = faktura.GetDataobetaldfak();
                  
                totaltBelopp = 0;
                totaltBetalt = 0;
                totaltKvarAttBetala = 0;

                GridViewFakturor.DataSource = fakturaSchema2;
                GridViewFakturor.DataBind();
            }
            else
                LabelResult.Text = "Fel, försök igen";

            LabelError.Visible = false;
        }
        
    protected void GridViewFakturor_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            int faktID = ((FakturaSchema.FakturaRow)((DataRowView)e.Row.DataItem).Row).FaktID;

            Faktura faktura = new Faktura();
            FakturaSchema fakturaSchema = faktura.GetByFakturaID(faktID);

            decimal belopp = 0;
            decimal betalt = 0;
            decimal kvarAttBetala = 0;

            foreach (FakturaSchema.FakturadetaljerRow detaljerRow in fakturaSchema.Fakturadetaljer)
            {
                belopp += Convert.ToDecimal(detaljerRow._Pris_enhet * detaljerRow.Lev_ant);
            }

            foreach (FakturaSchema.FakturaBetalningarRow betalningarRow in fakturaSchema.FakturaBetalningar)
            {
                betalt += Convert.ToDecimal(betalningarRow.BetaltBelopp);
            }

            kvarAttBetala = belopp - betalt;
                     

            if (fakturaSchema.Faktura.Rows.Count > 0 && fakturaSchema.Faktura[0].Kreditfaktura == -1)
            {
                belopp = -belopp;
                betalt = -betalt;
                kvarAttBetala = -kvarAttBetala;
            }

            totaltBelopp += belopp;
            totaltBetalt += betalt;
            totaltKvarAttBetala += kvarAttBetala;
            
            if(fakturaSchema.Faktura.Count > 0)
                ((Label)e.Row.FindControl("LabelFaktID")).Text = fakturaSchema.Faktura[0].FaktID.ToString();
            ((Label)e.Row.FindControl("LabelBelopp")).Text = belopp.ToString("F2");
            ((Label)e.Row.FindControl("LabelBetalt")).Text = betalt.ToString("F2");
            ((Label)e.Row.FindControl("LabelKvarAttBetala")).Text = kvarAttBetala.ToString("F2");
            //if (fakturaSchema.FakturaBetalningar.Count > 0)
            //    ((Label)e.Row.FindControl("LabelFritext")).Text = fakturaSchema.FakturaBetalningar[0].Fritext;

        }
       
        if (e.Row.RowType == DataControlRowType.Footer)
        {
            ((Label)e.Row.FindControl("LabelTotaltBelopp")).Text = totaltBelopp.ToString("F2");
            ((Label)e.Row.FindControl("LabelTotaltBetalt")).Text = totaltBetalt.ToString("F2");
            ((Label)e.Row.FindControl("LabelTotaltKvarAttBetala")).Text = totaltKvarAttBetala.ToString("F2");
        }
    }
Medlem sedan maj 20012 812 inlägg
#2

Jag kanske missförstår dig, men menar du så att information bara skall skrivas ut om Saldo != 0 och om Saldo == 0 så skall du inte skriva ut någon information alls.

Så fall gör du bara så här:

    protected void GridViewFakturor_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        switch(e.Row.RowType)
        {
               case DataControlRowType.DataRow:
                      //-- Här gör du din uträkning för att se om saldo är 0
                     decimal saldo = CalculateSaldo(.....);
                     if(saldo == decimal.Zero)
                          return;

                     //-- Eftersom saldo inte är 0 så får vi skriva ut all information till sidan
                     ....
                     break;
       }

- M

Medlem sedan mars 2006237 inlägg
#3

ja, det stämmer, men hur loppar man jag vill ju ha ut det som har saldo !=0 utrivet på skärmen

Medlem sedan maj 20012 812 inlägg
#4

Men allt det som har saldo != 0 kommer att skrivas ut. Din metod körs för varje rad i databasen och för varje rad så kontrollera du om saldo != 0 på med information om denna rad. Är saldot == 0 så kommer du lämna metoden och hoppa in i den igen för nästa rad i databasen och om saldot != 0 för den raden så kommer informationen att skrivas ut.

- M

Medlem sedan mars 2006237 inlägg
#5

Så här har jag gjort men det funkar inte skriver inte ut något nu

 protected void GridViewFakturor_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        switch (e.Row.RowType)
        {
            case DataControlRowType.DataRow:

                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    int faktID = ((FakturaSchema.FakturaRow)((DataRowView)e.Row.DataItem).Row).FaktID;

                    Faktura faktura = new Faktura();
                    FakturaSchema fakturaSchema = faktura.GetByFakturaID(faktID);

                    decimal belopp = 0;
                    decimal betalt = 0;
                    decimal kvarAttBetala = 0;

                    foreach (FakturaSchema.FakturadetaljerRow detaljerRow in fakturaSchema.Fakturadetaljer)
                    {
                        belopp += Convert.ToDecimal(detaljerRow._Pris_enhet * detaljerRow.Lev_ant);
                    }

                    foreach (FakturaSchema.FakturaBetalningarRow betalningarRow in fakturaSchema.FakturaBetalningar)
                    {
                        betalt += Convert.ToDecimal(betalningarRow.BetaltBelopp);
                    }

                    kvarAttBetala = belopp - betalt;

                    
                    decimal saldo = kvarAttBetala;
                    if (saldo == decimal.Zero)
                        return;

                   

                    
                    if (fakturaSchema.Faktura.Rows.Count > 0 && fakturaSchema.Faktura[0].Kreditfaktura == -1)
                    {
                        belopp = -belopp;
                        betalt = -betalt;
                        kvarAttBetala = -kvarAttBetala;
                    }

                    totaltBelopp += belopp;
                    totaltBetalt += betalt;
                    totaltKvarAttBetala += kvarAttBetala;

                    if (fakturaSchema.Faktura.Count > 0)
                    {
                        ((Label)e.Row.FindControl("LabelFaktID")).Text = fakturaSchema.Faktura[0].FaktID.ToString();
                        ((Label)e.Row.FindControl("LabelBelopp")).Text = belopp.ToString("F2");
                        ((Label)e.Row.FindControl("LabelBetalt")).Text = betalt.ToString("F2");
                        ((Label)e.Row.FindControl("LabelKvarAttBetala")).Text = kvarAttBetala.ToString("F2");
                        //if (fakturaSchema.FakturaBetalningar.Count > 0)
                        //    ((Label)e.Row.FindControl("LabelFritext")).Text = fakturaSchema.FakturaBetalningar[0].Fritext;
                    }

                    if (e.Row.RowType == DataControlRowType.Footer)
                    {
                        ((Label)e.Row.FindControl("LabelTotaltBelopp")).Text = totaltBelopp.ToString("F2");
                        ((Label)e.Row.FindControl("LabelTotaltBetalt")).Text = totaltBetalt.ToString("F2");
                        ((Label)e.Row.FindControl("LabelTotaltKvarAttBetala")).Text = totaltKvarAttBetala.ToString("F2");
                    }
                }
                break;
        }
    }
Medlem sedan maj 20012 812 inlägg
#6
 protected void GridViewFakturor_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        switch (e.Row.RowType)
        {
            case DataControlRowType.DataRow:
                    int faktID = ((FakturaSchema.FakturaRow)((DataRowView)e.Row.DataItem).Row).FaktID;

                    Faktura faktura = new Faktura();
                    FakturaSchema fakturaSchema = faktura.GetByFakturaID(faktID);

                    decimal belopp = 0;
                    decimal betalt = 0;

                    foreach (FakturaSchema.FakturadetaljerRow detaljerRow in fakturaSchema.Fakturadetaljer)
                        belopp += Convert.ToDecimal(detaljerRow._Pris_enhet * detaljerRow.Lev_ant);

                    foreach (FakturaSchema.FakturaBetalningarRow betalningarRow in fakturaSchema.FakturaBetalningar)
                        betalt += Convert.ToDecimal(betalningarRow.BetaltBelopp);

                    kvarAttBetala = belopp - betalt;

                    if (kvarAttBetala  == decimal.Zero)
                        return;
                    
                    if (fakturaSchema.Faktura.Rows.Count > 0 && fakturaSchema.Faktura[0].Kreditfaktura == -1)
                    {
                        belopp = -belopp;
                        betalt = -betalt;
                        kvarAttBetala = -kvarAttBetala;
                    }

                    totaltBelopp += belopp;
                    totaltBetalt += betalt;
                    totaltKvarAttBetala += kvarAttBetala;

                    if (fakturaSchema.Faktura.Count > 0)
                    {
                        ((Label)e.Row.FindControl("LabelFaktID")).Text = fakturaSchema.Faktura[0].FaktID.ToString();
                        ((Label)e.Row.FindControl("LabelBelopp")).Text = belopp.ToString("F2");
                        ((Label)e.Row.FindControl("LabelBetalt")).Text = betalt.ToString("F2");
                        ((Label)e.Row.FindControl("LabelKvarAttBetala")).Text = kvarAttBetala.ToString("F2");
                        //if (fakturaSchema.FakturaBetalningar.Count > 0)
                        //    ((Label)e.Row.FindControl("LabelFritext")).Text = fakturaSchema.FakturaBetalningar[0].Fritext;
                    }
                }
                break;

            case DataControlRowType.Footer:
                        ((Label)e.Row.FindControl("LabelTotaltBelopp")).Text = totaltBelopp.ToString("F2");
                        ((Label)e.Row.FindControl("LabelTotaltBetalt")).Text = totaltBetalt.ToString("F2");
                        ((Label)e.Row.FindControl("LabelTotaltKvarAttBetala")).Text = totaltKvarAttBetala.ToString("F2");
                    break;
        }
    }

Har du satt en breakpoint i din kod och stegat dig igenom koden för att se så det blir som du har tänkt dig. För det ser rätt så rätt ut i mina ögon, men det kan ju vara så att fakturaSchema.Faktura.Count är 0 och då kommer inget heller skrivas ut även om saldo != 0.

- M

Medlem sedan mars 2006237 inlägg
#7

nu funkar det,

355 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
140 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
217 ms — ändringar (db)