Frågan 29 apr. 2009 08:39 #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");
}
}
G Gladh Medlem sedan maj 2001 2 812 inlägg 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
ja, det stämmer, men hur loppar man jag vill ju ha ut det som har saldo !=0 utrivet på skärmen
G Gladh Medlem sedan maj 2001 2 812 inlägg 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
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;
}
}
G Gladh Medlem sedan maj 2001 2 812 inlägg 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