|
|
4#

楼主 |
发表于 2010-1-8 13:46:23
|
只看该作者

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的定位。
使用默认样式的高级的数据透视表:
运行代码:
<table style="BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; WIDTH: 484px; BORDER-BOTTOM: black 1px solid; HEIGHT: 197px">
<tbody>
<tr>
<td></td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 10pt; COLOR: white; FONT-FAMILY: tahoma; BACKGROUND-COLOR: black; TEXT-ALIGN: center" colSpan="2">John</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 10pt; COLOR: white; FONT-FAMILY: tahoma; BACKGROUND-COLOR: black; TEXT-ALIGN: center" colSpan="2">Jane</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 10pt; COLOR: white; FONT-FAMILY: tahoma; BACKGROUND-COLOR: black; TEXT-ALIGN: center" colSpan="2">Sally</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 10pt; COLOR: white; FONT-FAMILY: tahoma; BACKGROUND-COLOR: black; TEXT-ALIGN: center" colSpan="2">Sarah</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 10pt; COLOR: white; FONT-FAMILY: tahoma; BACKGROUND-COLOR: black; TEXT-ALIGN: center" colSpan="2">Grand Totals</td></tr>
<tr>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #8ca6ce">Product</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #8ca6ce">Sale Amount</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #8ca6ce">Quantity</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #8ca6ce">Sale Amount</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #8ca6ce">Quantity</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #8ca6ce">Sale Amount</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #8ca6ce">Quantity</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #8ca6ce">Sale Amount</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #8ca6ce">Quantity</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #8ca6ce">Sale Amount</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #8ca6ce">Quantity</td></tr>
<tr>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 10pt; COLOR: white; FONT-FAMILY: tahoma; BACKGROUND-COLOR: black">Pens</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">350</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">200</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">393.75</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">225</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">353.5</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">202</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">196</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">112</td>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">1293.25</td>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">739</td></tr>
<tr>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 10pt; COLOR: white; FONT-FAMILY: tahoma; BACKGROUND-COLOR: black">Pencils</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">500</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">400</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">418.75</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">335</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">378.75</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">303</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">306.25</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">245</td>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">1603.75</td>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">1283</td></tr>
<tr>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 10pt; COLOR: white; FONT-FAMILY: tahoma; BACKGROUND-COLOR: black">Notebooks</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">300</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">100</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">600</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">200</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">600</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">198</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">594</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">198</td>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">2094</td>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">696</td></tr>
<tr>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 10pt; COLOR: white; FONT-FAMILY: tahoma; BACKGROUND-COLOR: black">Rulers</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">100</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">50</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">150</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">75</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">594</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">98</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">100</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">50</td>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">944</td>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">273</td></tr>
<tr>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 10pt; COLOR: white; FONT-FAMILY: tahoma; BACKGROUND-COLOR: black">Calculators</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">1200</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">120</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">800</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">80</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">800</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">80</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">660</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">66</td>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">3460</td>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">346</td></tr>
<tr>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 10pt; COLOR: white; FONT-FAMILY: tahoma; BACKGROUND-COLOR: black">Back Packs</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">1500</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">75</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">1940</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">97</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">2020</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">101</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">2020</td>
<td style="FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">50</td>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">7480</td>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">323</td></tr>
<tr>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">Totals</td>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">3950</td>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">945</td>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">4302.50</td>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">1012</td>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">4746.25</td>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">982</td>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">3876.25</td>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">721</td>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">16875.00</td>
<td style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: tahoma; BACKGROUND-COLOR: #dde4f0">3660</td></tr></tbody></table>
使用自定义的CSS样式简单的数据透视表. |
|