Copyright © 2003-2009
By Suthep Sangvirotjanaphat
  Mobile: 089-967-2200, 081-915-7816
Phone: 0-2992-4877   Fax: 0-2992-4878
Fast Contact Us

GreatFriends.Biz Community

Custom Search
Copy เพื่ออ้างอิงถึงข้อความนี้:
 MESSAGE #101230 (อ่าน 2,127 ครั้ง)

บทความ - ASP.NET Reporting Matrix Control.

Tags: Web, VB, .NET 3.5, Reporting Service, VS 2008, Article
การแสดงข้อมูลแบบ Pivot Table คือ การนำเสนอข้อมูลแบบไขว้ในรูปแบบของตารางสองมิติ
อย่างเช่นรูป Capture Screen ด้านล่างนี้จะแสดงข้อมูลที่เป็นแบบ Pivot Table โดยนำข้อมูลของลูกค้าเป็นตัวตั้งและให้ข้อมูลของพนักงานฝ่ายขาย
เป็นชุดข้อมูลในแนวนอนแล้วทำการหยอดตัวเลขยอดขายของพนักงานที่มีในแต่ละลูกค้าลงไปเมื่อ
 
User ได้ดูข้อมูลก็จะสามารถเปรียบเทียบได้ว่าพนักงานแต่ละคนสามารถทำยอดในแต่ละลูกค้าได้จำนวนเท่าไหร่หรือมองมุมมองอื่นๆ อยู่ที่การวิเคราะห์ในแต่ละมุมมอง (http://office.microsoft.com/th-th/excel/HP101773841054.aspx)
[ตัวอย่างการแสดงข้อมูลแบบ 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 ได้ครับ
 
 


banpote_tt วันที่ส่ง: 21 ก.พ. 52 01:15 GMT+7
วันที่ปรับล่าสุด: 5 มี.ค. 52 00:20 GMT+7
REPLY #1 (101244)

เยี่ยมครับ

เริ่มมีเวลาปั่นบทความแล้วใช่ใหมครับ ขอให้มีเยอะๆ นะครับ



nano วันที่ส่ง: 21 ก.พ. 52 14:17 GMT+7
วันที่ปรับล่าสุด: 21 ก.พ. 52 14:17 GMT+7
REPLY #2 (101290)
เยี่ยมเลยครับ


tapeza555 วันที่ส่ง: 22 ก.พ. 52 20:30 GMT+7
วันที่ปรับล่าสุด: 22 ก.พ. 52 20:30 GMT+7
REPLY #3 (101301)

เป็นประโยชน์มากเลยทีเดียว ขอบคุณครับคุณ banpoteee  



mr.l วันที่ส่ง: 23 ก.พ. 52 08:15 GMT+7
วันที่ปรับล่าสุด: 23 ก.พ. 52 08:15 GMT+7
REPLY #4 (101367)
ขอบคุณสำหรับบทความดีๆครับผม


tonkung วันที่ส่ง: 24 ก.พ. 52 13:04 GMT+7
วันที่ปรับล่าสุด: 24 ก.พ. 52 13:04 GMT+7
REPLY #5 (101836)
เยี่ยมเลยครับ


jnithi วันที่ส่ง: 5 มี.ค. 52 00:20 GMT+7
วันที่ปรับล่าสุด: 5 มี.ค. 52 00:20 GMT+7
กระทู้นี้มีอายุเกิน 365 วันแล้ว ท่านจะไม่สามารถตอบกระทู้นี้ได้อีก
ถ้าต้องการสนทนาต่อ กรุณาตั้งเป็นกระทู้ใหม่ได้ในหน้าโฮม
และอาจจะอ้างถึงกระทู้นี้ โดยก๊อปปี้ข้อความในกล่องสีขาวด้านล่างไปแปะในกระทู้ใหม่

copy เพื่ออ้างอิงถึงข้อความนี้:
บทความ - ASP.NET Reporting Matrix Control.
http://greatfriends.biz?101230


10 ก.ย. 09:27
Online: 184