2010-09-23 31 views
20

Tôi cần hiển thị tổng của cột count từ số datagridview này, nhưng tôi không biết cách tôi có thể truy cập dữ liệu trong chế độ xem dữ liệu.làm cách nào tôi có thể hiển thị tổng trong cột datagridview?

Khi tôi nhấp vào nút, tôi muốn hiển thị 94 trong label1.

Làm cách nào để thực hiện điều này?

alt text

+2

@manhaz: hoan nghênh StackOverflow! Xem xét việc trả lời các câu hỏi khác của bạn và câu trả lời hay nhất, bạn nên đánh dấu là 'câu trả lời được chấp nhận' bằng dấu kiểm màu xanh lá cây. Nó sẽ giúp đảm bảo bạn nhận được câu trả lời tốt cho các câu hỏi trong tương lai! –

Trả lời

27
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(); 
5

Sử dụng LINQ nếu bạn có thể.

label1.Text = dataGridView1.Rows.Cast<DataGridViewRow>() 
            .AsEnumerable() 
            .Sum(x => int.Parse(x.Cells[1].Value.ToString())) 
            .ToString(); 
+0

Liệu một 'DataGridViewRow' có bao giờ được đưa vào một' DataRow' không? –

+0

Nhưng ... nhưng ... có phương thức mở rộng 'Field' trên' DataGridViewRow' không? –

14

Nếu lưới của bạn được ràng buộc với một DataTable, tôi tin rằng bạn chỉ có thể làm:

// Should probably add a DBNull check for safety; but you get the idea. 
long sum = (long)table.Compute("Sum(count)", "True"); 

Nếu nó không là ràng buộc vào một bảng, bạn có thể dễ dàng làm cho nó như vậy:

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; 
+3

Tôi được nhắc về lý do tôi ở đây ... Tôi chưa bao giờ nhận ra chức năng 'Compute' tồn tại trên đối tượng DataTable! – Brad

2

Thêm tổng hàng vào bộ sưu tập dữ liệu của bạn sẽ được liên kết với lưới.

1

bạn có thể làm điều đó tốt hơn với hai chế độ xem dữ liệu, bạn thêm cùng nguồn dữ liệu, ẩn tiêu đề thứ hai, đặt chiều cao của thứ hai = thành chiều cao của hàng đầu tiên, tắt tất cả các thuộc tính có thể thay đổi kích thước thứ hai, đồng bộ hóa các thanh cuộn của cả hai, chỉ ngang, đặt thứ hai trên botton của, vv đầu tiên

hãy xem:

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; 
      } 
     } 
3
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(); 
11

nhanh và sạch sẽ cách sử dụng LINQ

int total = dataGridView1.Rows.Cast<DataGridViewRow>() 
       .Sum(t => Convert.ToInt32(t.Cells[1].Value)); 

xác minh trên VS2013

0
//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 
Các vấn đề liên quan