วันพฤหัสบดีที่ ๘ กรกฎาคม พ.ศ. ๒๕๕๓

เปลี่ยนมาใช้ Syntax Highlighter 3.0.83

เพิ่งมาสังเกตุว่า ส่วนที่เป็น source code ที่ใช้ Syntax Highlighter มันไม่แสดงผลอย่างที่ควรจะเป็นครับ พอลองตรวจสอบดูปรากฏว่า ลิงค์ที่ไป URI ของ Syntax Highlighter version 1.5 ที่เคยใช้มัน Access Denied ครับ ลองหลายๆเวอร์ชันก็เป็นเหมือนกัน

ก็เลยได้โอกาสปรับเปลี่ยนมาลองใช้เวอร์ชันล่าสุด ซึ่งปัจจุบันเป็นเวอร์ชัน 3.0.83 ครับ ปรากฏว่าเวลาเราเขียน <pre> tag ต้องกำหนด attribute ใหม่ จากเดิมเป็น <pre name=code class=vb> เป็น <pre class="brush:vb"> ครับ

ไว้ว่างๆจะทยอยไล่แก้ที่บทความเก่าๆ ถ้าเป็นไปได้ก็จะหาที่เก็บไฟล์เวอร์ชันนี้เองน่าจะดี ^_^

Fix: IE8 Stuck on new tab

ตอนนี้ที่บริษัทเริ่มใช้ IE8 กันมากขึ้นแล้วครับ ทีนี้ก็เจอปัญหาว่าบางโปรแกรมที่เราเขียน เราสั่งให้มันเป็น Window ใหม่เช่นแสดงรายงาน หรือทำ Popup ปรากฏว่าอยู่ดีๆ ก็ไม่สามารถเปิด Window ใหม่ได้ครับ (มารู้ทีหลังว่าเป็นเพราะเราลงโปรแกรมบางตัว เช่น Image Viewer ครับ)

ทีแรกลองค้นใน google ดูก็พบว่าวิธีแก้ปัญหาคือต้องลงทะเบียน dll บางตัวใน registry ใหม่ ซึ่งมีหลายตัวมากครับ ให้เราลองสั่ง regsvr32 ทีละตัวดู ซึ่งก็เสียเวลามาก โชคดีที่เพื่อนที่ทำงานได้ bat file มา 1 ตัวซึ่งแก้ปัญหานี้ได้ พอไปดูในโค้ดก็เห็น link ไปเวบ http://iefaq.info ครับ พอเข้าไปดูปรากฏว่าไม่ใช่ภาษาอังกฤษซะงั้น

แต่สำหรับคนที่มีปัญหาเกี่ยวกับ IE ลองเข้าไปดูได้ครับ โดยเฉพาะ IE8 ถ้าสนใจตัว script สำหรับแก้ปัญหา registry ของ IE8 ให้ไปที่หน้า

http://iefaq.info/index.php?action=artikel&cat=47&id=136&artlang=de

สำหรับผมใช้ Windows7 32 bit เลยดาวน์โหลดตัว IE8-rereg.zip มาใช้ครับ สุดยอดมากๆๆ

วันเสาร์ที่ ๓ กรกฎาคม พ.ศ. ๒๕๕๓

แก้ปัญหา Export to Excel ด้วย GridView: Control 'GridView1' of type 'GridView' must be placed inside a form tag with runat=server.

วันก่อนผมเขียนโปรแกรมเพื่อ export ข้อมูลจาก GridView มาเป็น Excel ครับ (ก่อนหน้านี้ใช้ Datagrid ไม่เคยมีปัญหา) ก็เจอ error ดังนี้ครับ



นั่งงมอยู่ตั้งนาน ก็เลยเจอวิธีแก้ว่าให้เพิ่มโค้ดดังนี้ครับ


Public Overrides Sub VerifyRenderingInServerForm(ByVal control As System.Web.UI.Control)
'MyBase.VerifyRenderingInServerForm(control)

End Sub



แค่นี้ก็ใช้งานได้แล้วครับ

แต่ถ้าใครเจอปัญหาว่า "RegisterForEventValidation can only be called during Render();"



ให้เอา AllowSorting กับ AllowPaging ออกครับ

เท่านี้เราก็สามารถใช้ GridView ในการสร้าง Excel ได้แล้วครับ

วันศุกร์ที่ ๒ กรกฎาคม พ.ศ. ๒๕๕๓

ปัญหาเมื่อ export excel: The file you are trying to open, 'name.xls', is in a different format than specified by the file extension

ช่วงนี้หลังจากที่ทำงาน migrate Office จาก 2003 เป็น 2007 ก็เจอปัญหาว่าโปรแกรมที่เราสร้างรายงาน Excel ด้วยวิธีการกำหนด Response.ContentType = "application/vnd.ms-excel" ได้ผลลัพธ์ตามปกติ แต่ว่าจะมี alert ขึ้นมาว่า

The file you are trying to open, 'name.xls', is in a different format than specified by the file extension. Verify that the file is not corrupted and is from a trusted source before opening the file. Do you want to open the file now?

จริงๆก็ไม่ได้มีปัญหาอะไรมากหรอกครับ เพราะแค่กด OK ก็เปิดดู Excel ได้ตามปกติ แต่หลังๆเริ่มมี user บ่นขึ้นเรื่อยๆ เลยลอง search ดูก็พบ article ที่เวบไมโครซอฟท์ครับ

When you open a file in Excel 2007, you receive a warning that the ...
Article ID: 948615 - Last Review: March 4, 2008 - Revision: 1.1
support.microsoft.com/kb/948615


วิธีแก้ก็ง่ายๆคือไปกำหนด registry นั่นเอง ผมก็เลยทำเป็นไฟล์ reg จะได้ส่งให้ user เฉพาะรายที่มีปัญหารันได้เลย (จริงๆแล้วเราสามารถใช้ Group Policy ในการแก้ปัญหานี้ได้ครับ ลองดูใน article ละกัน)

ก่อนอื่นก็สร้างไฟล์ชื่อ ExcelFileFormat.reg สำคัญตรงนามสกุลไฟล์ให้เป็น .reg นะครับ แล้วก็ใส่เขียนโค้ดดังนี้

REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security]
"ExtensionHardening"=dword:0

จากนั้นก็ save ไฟล์

พอต้องการใช้ ก็ double click ที่ไฟล์นี้ได้เลยครับ