编程开发 > ASP > 文章内容

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

2010-10-22编辑:dan

Pivot.zip文件中包括两个解决方案。Pivot 是一个类库解决方案是。您可以编译此解决方案和在Web应用程序中引用Pivot.dll。另一个解决方案是PivotTest,它是是一个ASP.NET应用程序。这说明如何实现Pivot类。

以下为引用的内容:

public DataTable DataTableForTesting
{
    get
    {
        DataTable dt = new DataTable("Sales Table");
        dt.Columns.Add("Sales Person");
        dt.Columns.Add("Product");
        dt.Columns.Add("Quantity");
        dt.Columns.Add("Sale Amount");
        dt.Rows.Add(new object[] { "John", "Pens", 200, 350.00 });
        dt.Rows.Add(new object[] { "John", "Pencils", 400, 500.00 });
        dt.Rows.Add(new object[] { "John", "Notebooks", 100, 300.00 });
        dt.Rows.Add(new object[] { "John", "Rulers", 50, 100.00 });
        dt.Rows.Add(new object[] { "John", "Calculators", 120, 1200.00 });
        dt.Rows.Add(new object[] { "John", "Back Packs", 75, 1500.00 });
        dt.Rows.Add(new object[] { "Jane", "Pens", 225, 393.75 });
        dt.Rows.Add(new object[] { "Jane", "Pencils", 335, 418.75 });
        dt.Rows.Add(new object[] { "Jane", "Notebooks", 200, 600.00 });
        dt.Rows.Add(new object[] { "Jane", "Rulers", 75, 150.00 });
        dt.Rows.Add(new object[] { "Jane", "Calculators", 80, 800.00 });
        dt.Rows.Add(new object[] { "Jane", "Back Packs", 97, 1940.00 });
        dt.Rows.Add(new object[] { "Sally", "Pens", 202, 353.50 });
        dt.Rows.Add(new object[] { "Sally", "Pencils", 303, 378.75 });
        dt.Rows.Add(new object[] { "Sally", "Notebooks", 198, 600.00 });
        dt.Rows.Add(new object[] { "Sally", "Rulers", 98, 594.00 });
        dt.Rows.Add(new object[] { "Sally", "Calculators", 80, 800.00 });
        dt.Rows.Add(new object[] { "Sally", "Back Packs", 101, 2020.00 });
        dt.Rows.Add(new object[] { "Sarah", "Pens", 112, 196.00 });
        dt.Rows.Add(new object[] { "Sarah", "Pencils", 245, 306.25 });
        dt.Rows.Add(new object[] { "Sarah", "Notebooks", 198, 594.00 });
        dt.Rows.Add(new object[] { "Sarah", "Rulers", 50, 100.00 });
        dt.Rows.Add(new object[] { "Sarah", "Calculators", 66, 660.00 });
        dt.Rows.Add(new object[] { "Sarah", "Back Packs", 50, 2020.00 });
        return dt;
    }
}

我已创建数据表的属性,它建立在上面的例子中的数据表。这只是用于演示目的。

以下为引用的内容:

protected void Page_Load(object sender, EventArgs e)
{
    //Advanced Pivot
    Pivot advPivot = new Pivot(DataTableForTesting);
    HtmlTable advancedPivot = advPivot.PivotTable("Sales Person", "Product", new string[] { "Sale Amount", "Quantity" });
    div1.Controls.Add(advancedPivot);
    //Simple Pivot
    Pivot pivot = new Pivot(DataTableForTesting);
    //override default style with css
    pivot.CssTopHeading = "Heading";
    pivot.CssLeftColumn = "LeftColumn";
    pivot.CssItems = "Items";
    pivot.CssTotals = "Totals";
    pivot.CssTable = "Table";
    HtmlTable simplePivot = pivot.PivotTable("Product", "Sales Person", "Sale Amount");
    div2.Controls.Add(simplePivot);
}

上述代码包括两个实例化的pivot对象。第一个高级的pivot和第二是一个简单的pivot。你可以看到我已经为div添加了HtmlTable控件。我创建具有runat="server"属性的div,这样我可以在后台代码里面访问它。div只是帮助HtmlTable的定位。

使用默认样式的高级的数据透视表:

运行代码:









































































































John Jane Sally Sarah Grand Totals
Product Sale Amount Quantity Sale Amount Quantity Sale Amount Quantity Sale Amount Quantity Sale Amount Quantity
Pens 350 200 393.75 225 353.5 202 196 112 1293.25 739
Pencils 500 400 418.75 335 378.75 303 306.25 245 1603.75 1283
Notebooks 300 100 600 200 600 198 594 198 2094 696
Rulers 100 50 150 75 594 98 100 50 944 273
Calculators 1200 120 800 80 800 80 660 66 3460 346
Back Packs 1500 75 1940 97 2020 101 2020 50 7480 323
Totals 3950 945 4302.50 1012 4746.25 982 3876.25 721 16875.00 3660

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

热点推荐

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