编程开发 > ASP > 文章内容

ASP.NET实现类似Excel的数据透视表(二)

2010-10-22编辑:dan

数据透视表有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;
}

ASP.NET实现类似Excel的数据透视表(一)

热点推荐

登录注册
触屏版电脑版网站地图