การแสดงข้อมูลแบบ Pivot Table คือ การนำเสนอข้อมูลแบบไขว้ในรูปแบบของตารางสองมิติ
อย่างเช่นรูป Capture Screen ด้านล่างนี้จะแสดงข้อมูลที่เป็นแบบ Pivot Table โดยนำข้อมูลของลูกค้าเป็นตัวตั้งและให้ข้อมูลของพนักงานฝ่ายขาย
เป็นชุดข้อมูลในแนวนอนแล้วทำการหยอดตัวเลขยอดขายของพนักงานที่มีในแต่ละลูกค้าลงไปเมื่อ
[ตัวอย่างการแสดงข้อมูลแบบ Pivot Table ใน Excel]
ใน Reporting Service Design จะมี Matrix Control ที่จะช่วยให้เราสามารถนำเสนอข้อมูลในรูปแบบของ Pivot Table ได้เหมือนกันครับ ส่วนการนำมาใช้งานก็สามารถลาก Control ได้จาก Toolbox ปกติทั่วไปเหมือนกับ Control อื่นๆ อย่างเช่น Textbox, Table หรือ Line ครับ
[แสดง Icons Matrix Control ที่อยู่ใน Toolbox ของ Reporting Service Designer]
เมื่อเราลาก Matrix Control ลงใน Design Surface แล้ว Properties ที่จำเป็นจะต้องกำหนดคือการทำ Grouping ข้อมูลว่าเราจะหยิบข้อมูล Query ใน Field มาสร้างเป็น Rows หรือ Columns ใน Matrix อย่างเช่นในตัวอย่างด้านล่างผมกำหนดว่าจะ Company Name เป็น Column และให้ Title, FirstName, LastName ของพนักงานเป็น Rows
เมื่อกำหนด Groups ของข้อมูลได้แล้วเราจะต้องกำหนดตัวเลขว่าใน Matrix ที่เราได้จัดกลุ่มไปแล้วจะแสดงตัวเลขอะไร
อย่างเช่นในรูป Capture Screen ด้านล่างนี้ครับต้องการแสดงยอดขายของพนักงาน ซึ่งผมได้เขียน Expression ลงไปดังนี้ครับ
[แสดงการเขียน Expression เพื่อนกำหนดตัวเลขที่จะแสดงใน Matrix Control]
เมื่องทำการ Browse ข้อมูลในหน้า Web จะมีการแสดงข้อมูลดังนี้ครับ
[แสดงผลการ Render Report ออกมาที่หน้า ASPX]
สำหรับ Query ที่ผมนำมาสร้าง Report นี้ผมดึงข้อมูลมาจาก Database Northwind โดยมีการเขียน Query เพื่อ Join ข้อมูล
มาจาก Table ต่างๆ ดังนี้ครับ
SELECT
Products.ProductID, Products.ProductName, Categories.CategoryName,
Orders.OrderDate, Orders.RequiredDate, Orders.ShipName, Orders.ShipAddress,
Orders.ShipCity, Orders.ShipCountry, [Order Details].Quantity, Employees.LastName,
Employees.FirstName, Employees.Title, Customers.CompanyName, [Order Details].UnitPrice
FROM
Orders INNER JOIN [Order Details] ON Orders.OrderID = [Order Details].OrderID
INNER JOIN Products
INNER JOIN Categories
ON Products.CategoryID = Categories.CategoryID
ON [Order Details].ProductID = Products.ProductID
INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID
WHERE (Products.ProductID = '10')
ORDER
BY Products
.ProductID
[แสดง Query ที่นำมาสร้าง Report]
และในตัวอย่างที่ผมให้ไปผมจะใช้ ASP.NET ListView Control เป็นตัวแสดงรายการ Product ก่อนจากนั้น User ก็จะทำการ Click ที่ Row ใน Table
เพื่อเปิดดูรายการขายของสินค้านั้นๆ ครับ
[แสดงหน้าจอที่ List รายการสินค้าเพื่อ Drill Down ไปยังหน้า Report]
นอกจากการนำ ASP.NET ListView Control มาใช้ในตัวอย่างนี้แล้วผมยังนำ JQuery มาสร้าง Textbox Water Mark ในตัว Search
และมีการใช้ Dynamic LINQ เพื่อทำ Sorting ให้กับ ListView ด้วยครับ
[แสดงส่วนของ Coding ที่สร้าง Textbox Water Mark]
[แสดงส่วนของ Coding ที่ใช้ Dynamic LINQ ในการสร้าง Order By ของ LINQ จาก String Expression]
ในบทความนี้ผมอยากนำเสนอประโยชน์ที่เราจะได้จากการนำ Matrix Control มาใช้เพื่อทำให้เราสามารถนำเสนอข้อมูลในแบบ
Pivot Table ได้ครับ