Forums Neueste Beiträge
 

Summenbildung im DataGridView

28/10/2008 - 11:44 von Emil | Report spam
Hallo,

mein DataGridView sieht wie folgt aus:

Test1 Test2 Betrag
a a1 100,20 €
b b1 80,00 €
c c1 110,00 €
d d1 10,00 €

Kann ich im DataGridView eine Summe über die Spalte Betrag bilden?
Das DataGridView soll dann so aussehen:

Test1 Test2 Betrag
a a1 100,20 €
b b1 80,00 €
c c1 110,00 €
d d1 10,00 €

gesamt 300,20 €

Vielen Dank im voraus
Emil
 

Lesen sie die antworten

#1 Frank Dzaebel
28/10/2008 - 23:30 | Warnen spam
Hallo Emil,

mein DataGridView sieht wie folgt aus:
Kann ich im DataGridView eine Summe über die Spalte Betrag bilden?



ja, hier gibt es Ansàtze zu finden:

http://groups.google.com/group/micr...&tvc=1

Das einfachste (ganz grob) ist wohl, unter dem Grid
einen Label zu platzieren, der dann die Summe
anzeigt, zum Beispiel etwa so:

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

DataGridView dgv = new DataGridView();
DataTable dt = new DataTable();
DataColumn colTest1, colTest2, colBetrag;
Label lblSumme = new Label();

private void Form1_Load(object sender, EventArgs e)
{
Controls.Add(dgv);
colTest1 = dt.Columns.Add("Test1");
colTest2 = dt.Columns.Add("Test2");
colBetrag = dt.Columns.Add("Betrag", typeof(double));
DataRow dr = dt.NewRow();
dt.Rows.Add("a", "a1", 100.20);
dt.Rows.Add("b", "b1", 80.10);
dt.Rows.Add("c", "c1", 110.00);
dt.Rows.Add("d", "d1", 10.90);
dgv.DataSource = dt;
Width = 400; Height = 250;
dgv.Width = 360; dgv.Height = 130;
dgv.Rows.CollectionChanged += new
CollectionChangeEventHandler(Rows_CollectionChanged);
dgv.CellValueChanged += new
DataGridViewCellEventHandler(dgv_CellValueChanged);
dgv.DataError += new DataGridViewDataErrorEventHandler(dgv_DataError);
Controls.Add(lblSumme); lblSumme.AutoSize = true;
lblSumme.Location = dgv.Location;
lblSumme.Left = 200; lblSumme.Top = 132;
// Grössen spàter relativ berechnen.
BerechneSpalte(colBetrag);
lblSumme.BringToFront();
}

void dgv_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
MessageBox.Show("Wert muss einen Betrag angeben!");
}

void dgv_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
BerechneSpalte(colBetrag);
}

void Rows_CollectionChanged(object sender, CollectionChangeEventArgs e)
{
BerechneSpalte(colBetrag);
}

void BerechneSpalte(DataColumn colBetrag)
{
double summe = 0;
for (int row=0; row<dgv.Rows.Count; row++)
{
DataGridViewCell cell = dgv[colBetrag.Ordinal, row];
if (cell != null && cell.Value!= null && cell.Value != DBNull.Value)
summe += (double)cell.Value;
}
lblSumme.Text = "Summe: " + summe.ToString("N2");
}
}


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen