Muszę wyświetlić sumę kolumny count
z tego datagridview
, ale nie wiem, jak mogę uzyskać dane w datagridview.jak mogę wyświetlić sumę w kolumnie datagridview?
Po kliknięciu przycisku chcę pokazać 94
w label1
.
Jak można tego dokonać?
Muszę wyświetlić sumę kolumny count
z tego datagridview
, ale nie wiem, jak mogę uzyskać dane w datagridview.jak mogę wyświetlić sumę w kolumnie datagridview?
Po kliknięciu przycisku chcę pokazać 94
w label1
.
Jak można tego dokonać?
int sum = 0;
for (int i = 0; i < dataGridView1.Rows.Count; ++i)
{
sum += Convert.ToInt32(dataGridView1.Rows[i].Cells[1].Value);
}
label1.text = sum.ToString();
używać LINQ, jeśli możesz.
label1.Text = dataGridView1.Rows.Cast<DataGridViewRow>()
.AsEnumerable()
.Sum(x => int.Parse(x.Cells[1].Value.ToString()))
.ToString();
Czy 'DataGridViewRow' może być kiedykolwiek rzutowany na' DataRow'? –
Ale ... ale ... czy istnieje metoda rozszerzenia 'Field' na' DataGridViewRow'? –
Jeśli siatka jest związany z DataTable
, uważam, że można po prostu zrobić:
// Should probably add a DBNull check for safety; but you get the idea.
long sum = (long)table.Compute("Sum(count)", "True");
Jeśli nie jest związany z tabeli, można łatwo zrobić to tak:
var table = new DataTable();
table.Columns.Add("type", typeof(string));
table.Columns.Add("count", typeof(int));
// This will automatically create the DataGridView's columns.
dataGridView.DataSource = table;
Przypomina mi się przyczyna, dla której tu jestem ... Nigdy nie zdawałem sobie sprawy, że funkcja DataCable istnieje w funkcji "Obliczanie"! – Brad
Dodaj cały wiersz do zbioru danych, który będzie powiązany z siatką.
możesz zrobić to lepiej dzięki dwóm datagridview, dodać to samo źródło danych, ukryć nagłówki drugiego, ustawić wysokość drugiego = na wysokość wierszy pierwszego, wyłączyć wszystkie zmienne atrybuty drugi, synchronizować przewijania obu, tylko poziome, umieścić drugi na Botton pierwszego itd
spojrzeć:
dgv3.ColumnHeadersVisible = false;
dgv3.Height = dgv1.Rows[0].Height;
dgv3.Location = new Point(Xdgvx, this.dgv1.Height - dgv3.Height - SystemInformation.HorizontalScrollBarHeight);
dgv3.Width = dgv1.Width;
private void dgv1_Scroll(object sender, ScrollEventArgs e)
{
if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll)
{
dgv3.HorizontalScrollingOffset = e.NewValue;
}
}
decimal Total = 0;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
Total+= Convert.ToDecimal(dataGridView1.Rows[i].Cells["ColumnName"].Value);
}
labelName.Text = Total.ToString();
szybki i czysty sposób przy użyciu LINQ
int total = dataGridView1.Rows.Cast<DataGridViewRow>()
.Sum(t => Convert.ToInt32(t.Cells[1].Value));
weryfikowana VS2013
//declare the total variable
int total = 0;
//loop through the datagrid and sum the column
for(int i=0;i<datagridview1.Rows.Count;i++)
{
total +=int.Parse(datagridview1.Rows[i].Cells["CELL NAME OR INDEX"].Value.ToString());
}
string tota
@manhaz: powitanie StackOverflow! Zastanów się nad odpowiedzią na pozostałe pytania, a najlepiej, zaznaczając jako "zaakceptowaną odpowiedź" zielony znacznik wyboru. Pomoże ci to uzyskać dobre odpowiedzi na przyszłe pytania! –