數(shù)據(jù)透視表有3個面:
X軸構(gòu)成了在表格上方的大標(biāo)題。Y軸構(gòu)成表的左欄,Z軸構(gòu)成了X軸和Y軸對應(yīng)的值。簡單的數(shù)據(jù)透視表將會對每一個x軸值都只有一個z軸列,高級的數(shù)據(jù)透視表將對于每個X軸的值會對應(yīng)有多個Z軸的值。
一個非常重要的一點(diǎn)是,Z軸的值只能是數(shù)字。這是因?yàn)閆軸值為橫軸和縱軸的總額。使用一個非數(shù)值Z軸字段將拋出一個異常。
因此,如果你注意上面的數(shù)據(jù)表,你會發(fā)現(xiàn),“Sales Person”和“Product”字段可以分配到的X軸或Y軸,但不能給z軸。在“Quantity”和“Sale Amount”字段可以被分配到z軸。
Pivot 類將數(shù)據(jù)表轉(zhuǎn)換成html table。然后您可以將它輸出到Web窗體上。那么,這只是實(shí)現(xiàn)的方法。如果你愿意,你可以根據(jù)這個類的邏輯創(chuàng)建一個用戶控件。
#region Variables private DataTable _DataTable; private string _CssTopHeading; private string _CssSubHeading; private string _CssLeftColumn; private string _CssItems; private string _CssTotals; private string _CssTable; #endregion Variables #region Constructors public Pivot(DataTable dataTable) { Init(); _DataTable = dataTable; } #endregion Constructors
這部分的代碼是非常自我解釋。 你能創(chuàng)建一個Pivot 對象,通過傳遞一個datatable作為參數(shù)。在init()方法只分配一個空字符串值給CSS變量。如果CSS的變量是一個空字符串,構(gòu)造方法將使用默認(rèn)的樣式。每一個CSS變量都有一個相應(yīng)的屬性。
private string FindValue(string xAxisField, string xAxisValue, string yAxisField, string yAxisValue, string zAxisField) { string zAxisValue = ""; try { foreach (DataRow row in _DataTable.Rows) { if (Convert.ToString(row[xAxisField]) == xAxisValue && Convert.ToString(row[yAxisField]) == yAxisValue) { zAxisValue = Convert.ToString(row[zAxisField]); break; } } } catch { throw; } return zAxisValue; }
出處:朱祁林
責(zé)任編輯:bluehearts
上一頁 ASP.NET實(shí)現(xiàn)類似Excel的數(shù)據(jù)透視表 [1] 下一頁 ASP.NET實(shí)現(xiàn)類似Excel的數(shù)據(jù)透視表 [3]
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|