数据透视表有3个面:

X轴构成了在表格上方的大标题。Y轴构成表的左栏,Z轴构成了X轴和Y轴对应的值。简单的数据透视表将会对每一个x轴值都只有一个z轴列,高级的数据透视表将对于每个X轴的值会对应有多个Z轴的值。
一个非常重要的一点是,Z轴的值只能是数字。这是因为Z轴值为横轴和纵轴的总额。使用一个非数值Z轴字段将抛出一个异常。
因此,如果你注意上面的数据表,你会发现,“Sales Person”和“Product”字段可以分配到的X轴或Y轴,但不能给z轴。在“Quantity”和“Sale Amount”字段可以被分配到z轴。
Pivot 类将数据表转换成html table。然后您可以将它输出到Web窗体上。那么,这只是实现的方法。如果你愿意,你可以根据这个类的逻辑创建一个用户控件。
#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
这部分的代码是非常自我解释。 你能创建一个Pivot 对象,通过传递一个datatable作为参数。在init()方法只分配一个空字符串值给CSS变量。如果CSS的变量是一个空字符串,构造方法将使用默认的样式。每一个CSS变量都有一个相应的属性。
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; }
出处:朱祁林
责任编辑:bluehearts
上一页 ASP.NET实现类似Excel的数据透视表 [1] 下一页 ASP.NET实现类似Excel的数据透视表 [3]
◎进入论坛网络编程版块参加讨论
|