2013-06-12 89 views
1

未綁定的行中的DataGridView在C#

Class A 
{ 
private string mName; 
private int mId; 
private int mType; 
private int mqty; 
/* 
property to view variables. 
*/ 
} 

BindingList<A> listofA = new BindingList<A>(); 

「listofA」 被綁定到DataGridView控件。

dataGridView1.DataSource=listofA; 

顯示爲。

------------------ 
|Name|Id|Type|Qty| 
------------------ 
|CatA| 1| 0| 5| 
|CatB| 2| 0| 6| 
|DogA| 3| 1| 7| 
|DogB| 4| 1| 8| 

我想要一個未綁定的行顯示。

------------------ 
|Name|Id|Type|Qty| 
------------------ 
|CatA| 1| 0| 5| 
|CatB| 2| 0| 6| 
|Cats|__| 0| 11| <------sum of qty 
|DogA| 3| 1| 7| 
|DogB| 4| 1| 8| 
|Dogs|__| 1| 15| <------sum of qty 

我在考慮在「A類」中添加一個Bool,它將作爲一個項目,如果爲假,並且如果爲真,則作爲總和。

有沒有更好的方法來做到這一點。

+0

你可能做到這一點在你真正的代碼,但要確保'listofA'排序。不要依賴您的DAL將其按照您需要的方式分類給您。 –

+1

您甚至不需要額外的bool字段,只需要將這些行(即包含Sum值)添加到綁定網格的數據表中即可。 –

+0

額外的字段可以用來確保總數總是給定類別的最後一行,不是? ...或ID .. –

回答

0

我會做的是代碼在RowDataBound事件:

1)比較來自前一行(例如數據:動物類型)。如果不同,那麼你知道你已經達到了一個類別的結尾,如果相同,你應該總結你需要總結的不同的值

2a)類型是一樣的,你做了總結,沒有什麼更多的工作要做

2B)型是不同的,你創建一個新行的總和,達到價值和重置總和變量

+0

RowDataBound不是datagridview的事件。 –

+0

我的不好,我讀了GridView,並沒有意識到我們在說winforms,而不是ASP.NET。那麼也許你可以使用['RowPrePaint'](http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.onrowprepaint.aspx)事件?我希望我沒有告訴一些愚蠢的事情,我自己並沒有進入winforms ... –

相關問題