|
|
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
|
การรันนอกเบราว์เซอร์ของ Silverlight 3 ถูกจำกัดอยู่ในขอบเขตของ sandbox ไม่แตกต่างอะไรกับการรันบนเบราว์เซอร์ แต่มาใน SL4 b1 การรันนอกเบราว์เซอร์ยอมเปิดข้อจำกันบางส่วนของ sandbox เพื่อให้สามารถเข้าถึงข้อมูลบนเครื่องไคลน์เอ็นต์ได้มากขึ้น โดยผ่านการตรวจสอบสิทธิ์ขณะรันแอปพลิเคชัน โดยสิ่งที่ได้รับอนุญาตเปิดสิทธิ์มีดังนี้:
บทความนี้เราจะใช้ SL4 Export ข้อมูลจาก SQL เป็น Excel โดยใช้ฟีเจอร์ Interop COM เพื่อสื่อสาร และส่งข้อมูลไปเป็น Excel โดยใช้ฟีเจอร์ของ C#4.0 ประกอบร่วมด้วย นั่นคือ ฟีเจอร์ Dynamic Language
ทำให้เราจะมี Type พิเศษ ขึ้นมาใน C#4.0 คือ dynamic กล่าวคือถ้า object ใดเป็น dynamic จะสามารถเรียก Method, Property หรือ Index ใดก็ได้ แม้จะไม่มีอยู่จริง ก็จะไม่ Error ณ Design time (แต่ compile-time สิ่งเหล่านั้นที่เรียก ต้องมีอยู่จริง)และในบทความนี้ผู้เขียนขอใช้ตัวอย่างโปรเจ็กต์จากบทความ: Drag-Drop Data Binding to Silverlight 4 ก่อนหน้านี้มาเป็นตัวอย่างประกอบครับ ตัวอย่างหน้าจอแอปพลิเคชันเป็นดังนี้
จากรูป:
เมื่อกดปุ่ม Export โปรแกรม Excel จะถูกเปิดพร้อมกับการเขียนข้อมูลใน DataGrid ลง Excel ทีละแถว
ขั้นตอนการพัฒนาแอปพลิเคชั:
1. จากโปรเจ็กต์ Drag-Drop Data Binding to Silverlight 4 ทำการลากคอนโทรล Button ไปวางหนึ่งอัน
2. ก่อนอื่นเราต้องไปทำการเพิ่มการอ้างอิง Microsoft.CSharp.dll เพื่อใช้งานฟีเจอร์ Dynamic Language ซึ่งสามารถพบได้ในพาธ: Program Files/microsoft SDKs/Silverlight/V4.0/Libraries/Client ดังรูป
3. กำหนดให้ Silverlight รันนอกเบราว์เซอร์ โดยคลิกขวาบนโปรเจ็กต์ Drag-DropDataBindingToSilverlight4 => Properties จะได้หน้าจอดังรูป จากนั้นคลิกเลือก Enable running application out of the browser
4. คลิกเลือก Require elevated trust when running outside the browser เพื่ออนุญาตให้แอปพลิเคชัน เข้าถึง COM Object จากนั้นคลิก OK
5. ใส่โค้ด:
|
private void btExport2Excel_Click(object sender, RoutedEventArgs e) { //เป็นการรันนอกเบราว์เซอร์ และได้รับอนุญาตเปิดสิทธิ์ if (App.Current.IsRunningOutOfBrowser && App.Current.HasElevatedPermissions) if (ComAutomationFactory.IsAvailable) //ได้รับอนุญาต export2Excel(); } private void export2Excel() { //สร้างอ็อบเจ็กต์ Excel แอปพลิเคชัน ด้วย Type dynamic dynamic excel = ComAutomationFactory.CreateObject("Excel.Application"); //เปิด Excel excel.Visible = true; //เพิ่มใหม่สมุดงาน excel.Workbooks.Add(); //สร้าง Column excel ในถึงปัจจุบันแผ่นงาน (ActiveSheet) excel.ActiveSheet.Cells[1, 1].Value2 = "ProductID"; excel.ActiveSheet.Cells[1, 2].Value2 = "ProductName"; excel.ActiveSheet.Cells[1, 3].Value2 = "QuantityPerUnit"; excel.ActiveSheet.Cells[1, 4].Value2 = "UnitPrice"; excel.ActiveSheet.Cells[1, 5].Value2 = "UnitsInStock"; excel.ActiveSheet.Cells[1, 6].Value2 = "UnitsOnOrder"; excel.ActiveSheet.Cells[1, 7].Value2 = "Discontinued"; //ลูบดึงข้อมูลบน DataGrid //แปลงอ็อบเจ็กต์เป็น Products int xrow = 1; foreach (Products p in productsDataGrid.ItemsSource.Cast<Products>()) { //เขียนข้อมูลลง Excel ในถึงปัจจุบันแผ่นงาน (ActiveSheet) xrow++; excel.ActiveSheet.Cells[xrow, 1].Value2 = p.ProductID; excel.ActiveSheet.Cells[xrow, 2].Value2 = p.ProductName; excel.ActiveSheet.Cells[xrow, 3].Value2 = p.QuantityPerUnit; excel.ActiveSheet.Cells[xrow, 4].Value2 = p.UnitPrice; excel.ActiveSheet.Cells[xrow, 5].Value2 = p.UnitsInStock; excel.ActiveSheet.Cells[xrow, 6].Value2 = p.UnitsOnOrder; excel.ActiveSheet.Cells[xrow, 7].Value2 = p.Discontinued; } } |
6. ทดสอบรันแอปพลิเคชัน ทำการติดตั้งให้แอปพลิเคชันรันนอกเบราว์เซอร์ โดยการคลิกขวา => Install Drag-DropDataBindingToSilve onto this computer
7. ติ๊กเลือก Start menu และ Desktop เพื่อสร้าง shortcut ไว้ที่ Start menu และ Desktop จากนั้นคลิก Install
เราจะได้ shortcut บน Desktop และ Start menu
8. แอปพลิเคชันรันนอกเบราว์เซอร์ จะถูกเปิดขึ้น จากนั้นกดปุ่ม Export จะทำการเปิด Excel และเขียนข้อมูลลง Excel
ข้อมูล Excel
9. เราสามารถดีบั๊กแอปพลิเคชันรันนอกเบราว์เซอร์ได้ โดยคลิกที่แท็บ Debug ติ๊กเลือก Installed out-of-browser application
10. กำหนดให้ รันโปรเจ็กต์ Drag-DropDataBindingToSilverlight4 เป็นโปรเจ็กต์แรก โดยคลิกขวา => Set as StartUP Project
เพียงเท่านี้เราก็สามารถใช้ Silverlight Export ข้อมูลเป็น Excel ได้เสมือนใช้โปรแกรม Windows App. กันแล้ว
แหล่งข้อมูลดาวน์โหลด:
แหล่งข้อมูลอ้างอิง:
|
|
nano |
วันที่ส่ง: 4 ธ.ค. 52 17:36 GMT+7 วันที่ปรับล่าสุด: 11 ม.ค. 53 21:36 GMT+7 |
|
|
Joausal |
วันที่ส่ง: 20 ธ.ค. 52 21:03 GMT+7 วันที่ปรับล่าสุด: 20 ธ.ค. 52 21:03 GMT+7 |
|
|
kuraynai |
วันที่ส่ง: 11 ม.ค. 53 21:36 GMT+7 วันที่ปรับล่าสุด: 11 ม.ค. 53 21:36 GMT+7 |
|
เรียน .NET/OOAD กับ อ.สุเทพ (surrealist) Microsoft Most Valuable Professional (MVP): |
![]() ลงทะเบียนเรียน |