之前坎尼有發佈一版 Web User Control,讓 GridView 可以輕鬆匯出成 Excel
(詳見 [NPOI] 輕鬆地將 GridView 匯出成試算表)
後來有讀者發信來問:「為什麼他匯出的檔案標題列都是空白?」
經一番追查之後發現,原來是 GridView 啟用了排序 (AllowSorting)
HeaderText 會自動轉換成 LinkButton
以至於原本抓取標題部分的程式碼只抓到空白文字
於是坎尼稍做了一下修改,如下圖紅框所示
可以看到,不論標題是否可排序
新版本的 Web User Control 仍可以抓取標題文字
請有需求的讀者到 這邊 下載
2011年2月11日
2011年2月10日
在自行撰寫的 DNN Module 中使用 & 列印 Microsoft Chart Controls 的注意事項
前陣子因緣際會的又摸了一下 DNN,根據官網上的 Basic DotNetNuke Module Development Video 教學影片的說明開始自行撰寫模組,並且在模組中用到 Microsoft Chart Controls 來呈現圖表。過程中陸續遇到一些問題,以下是解法。
問題一:error: Invalid temp directory in chart handler configuration [c:\TempImageFiles\]
這個問題挺好解的,因為錯誤訊息很明確,直接 Google 就可以找到解法,重點在於自己新增的 DNN Module 專案(位於 C:\inetpub\wwwroot\dotnetnuke\DesktopModules\[YourModule])下的 web.config 是找不到 Chart Handler 的設定的,必須要去找最上層的 DNN 站台的 web.config,位置是 C:\inetpub\wwwroot\dotnetnuke\web.config:
找對 web.config 檔案以後,把多餘的「c:\TempImageFiles\」設定刪除,或者指定一個確實存在且有寫入權限的目錄即可。
問題二:無法列印 Chart Control 圖表,列印時會看到表示圖檔不存在的紅色叉叉
經過一番搜尋,最後在 StackOverflow 找到這篇文章,雖然該文作者說在 web.config 的 ChartImageHandler 設定中加上「deleteAfterServcing=false」對他們的專案偶爾也沒作用,但我試著加上這個設定之後,測試到目前為止每次都可以順利的把圖表列印出來!而從這個問題一直到現在都沒人回覆的狀況來看,大概只有極少數狀況在加上此設定以後仍然無法確保100% 正確的執行結果,因此有需要列印 Chart Control 的內容的話,加上這個設定就沒錯啦!(看起來就是叫系統不要把暫存圖檔立刻刪掉)
以上就是最近在 DNN Module 中使用 Microsoft Chart Control 遇到的問題 & 解法,有了這次的經驗,下次開發就可以更順利啦!
問題一:error: Invalid temp directory in chart handler configuration [c:\TempImageFiles\]
這個問題挺好解的,因為錯誤訊息很明確,直接 Google 就可以找到解法,重點在於自己新增的 DNN Module 專案(位於 C:\inetpub\wwwroot\dotnetnuke\DesktopModules\[YourModule])下的 web.config 是找不到 Chart Handler 的設定的,必須要去找最上層的 DNN 站台的 web.config,位置是 C:\inetpub\wwwroot\dotnetnuke\web.config:
找對 web.config 檔案以後,把多餘的「c:\TempImageFiles\」設定刪除,或者指定一個確實存在且有寫入權限的目錄即可。
問題二:無法列印 Chart Control 圖表,列印時會看到表示圖檔不存在的紅色叉叉
經過一番搜尋,最後在 StackOverflow 找到這篇文章,雖然該文作者說在 web.config 的 ChartImageHandler 設定中加上「deleteAfterServcing=false」對他們的專案偶爾也沒作用,但我試著加上這個設定之後,測試到目前為止每次都可以順利的把圖表列印出來!而從這個問題一直到現在都沒人回覆的狀況來看,大概只有極少數狀況在加上此設定以後仍然無法確保100% 正確的執行結果,因此有需要列印 Chart Control 的內容的話,加上這個設定就沒錯啦!(看起來就是叫系統不要把暫存圖檔立刻刪掉)
以上就是最近在 DNN Module 中使用 Microsoft Chart Control 遇到的問題 & 解法,有了這次的經驗,下次開發就可以更順利啦!
2011年2月5日
IIS 7.5 設定網站的實體路徑執行身分 (Physical Path Credentials) 時,AD 帳密輸入錯誤不會跳出錯誤訊息
去年底去恆逸上了一堂 SCVMM 的課(Microsoft Official Course 6331A: Deploying and Managing Microsoft System Center Virtual Machine Manager),在實作的過程中一切都很順利,但是在我要打開 SSRS 的報表網站來檢視報表時,卻一直跳出類似「網站無法存取」的錯誤,但是老師和課堂上其他同學的系統都很正常。
接下來就是恐怖的 debug 時間,老師親自過來在我的機器上測試各種設定,從 IIS、SSRS、AD、VMM Admin Console 一路到 SCOM 都查遍了,甚至把 VMM Admin Console 和 SCOM 砍掉重裝,問題還是沒有解決。最後花了將近一個半小時,終於找出問題!原因就是在設定 IIS & SSRS 網站的時候,設定「實體路徑執行身分 (Physical Path Credentials)」時要輸入 AD 的帳密,此時如果帳密輸入錯誤,IIS 是不會跳出錯誤訊息的!!!
「實體路徑執行身分 (Physical Path Credentials)」的位置在哪裡呢?以 IIS 7.5 為例:
在每個網站的 Features View 裡面,右邊的控制面板中間可以看到「Advanced Settings」:
點進去以後,可以看到「Physical Path Credentials」這個設定值:
在接下來的設定畫面中,要把預設的「Application user (pass-through authentication)」改為「Specific user」,並在此處輸入 AD 的帳密:
問題就是出在這一步!!
在這裡雖然 Password 有 confirm 的機制,但是若連續兩次輸入錯誤(暈倒),IIS 就會接受這個錯誤的密碼,而後當網站實際上執行,以這組帳密去驗證時就會失敗,進而產生「網站無法存取」或者「存取被拒」之類的錯誤訊息了!
雖然說密碼連續兩次輸入錯誤還蠻扯的,但是若是跟我一樣習慣盲打的人,有時候用到一支鍵位配置跟平常習慣的鍵位不一樣的鍵盤時,是可能會連續兩次輸入錯的一模一樣的字串的。特別是這個欄位是密碼欄位,在畫面上看不到實際輸入的內容,因此當系統顯然沒有真的嘗試用此組帳密進行驗證,只是單純用 confirm password 的方式驗證時,就會發生這次的狀況了!
在這樣的狀況下,最好的作法就是設定完 AD 帳密以後,馬上試著打開網站看看能否正常運作,如果發現問題的話才有機會回頭檢查設定是否有誤。
後記:
雖然我只有用 IIS 7.5 來驗證,但是既然最新版的 IIS 都會有這問題,那麼舊版應該也是免不了的 ~
接下來就是恐怖的 debug 時間,老師親自過來在我的機器上測試各種設定,從 IIS、SSRS、AD、VMM Admin Console 一路到 SCOM 都查遍了,甚至把 VMM Admin Console 和 SCOM 砍掉重裝,問題還是沒有解決。最後花了將近一個半小時,終於找出問題!原因就是在設定 IIS & SSRS 網站的時候,設定「實體路徑執行身分 (Physical Path Credentials)」時要輸入 AD 的帳密,此時如果帳密輸入錯誤,IIS 是不會跳出錯誤訊息的!!!
「實體路徑執行身分 (Physical Path Credentials)」的位置在哪裡呢?以 IIS 7.5 為例:
在每個網站的 Features View 裡面,右邊的控制面板中間可以看到「Advanced Settings」:
點進去以後,可以看到「Physical Path Credentials」這個設定值:
在接下來的設定畫面中,要把預設的「Application user (pass-through authentication)」改為「Specific user」,並在此處輸入 AD 的帳密:
問題就是出在這一步!!
在這裡雖然 Password 有 confirm 的機制,但是若連續兩次輸入錯誤(暈倒),IIS 就會接受這個錯誤的密碼,而後當網站實際上執行,以這組帳密去驗證時就會失敗,進而產生「網站無法存取」或者「存取被拒」之類的錯誤訊息了!
雖然說密碼連續兩次輸入錯誤還蠻扯的,但是若是跟我一樣習慣盲打的人,有時候用到一支鍵位配置跟平常習慣的鍵位不一樣的鍵盤時,是可能會連續兩次輸入錯的一模一樣的字串的。特別是這個欄位是密碼欄位,在畫面上看不到實際輸入的內容,因此當系統顯然沒有真的嘗試用此組帳密進行驗證,只是單純用 confirm password 的方式驗證時,就會發生這次的狀況了!
在這樣的狀況下,最好的作法就是設定完 AD 帳密以後,馬上試著打開網站看看能否正常運作,如果發現問題的話才有機會回頭檢查設定是否有誤。
後記:
雖然我只有用 IIS 7.5 來驗證,但是既然最新版的 IIS 都會有這問題,那麼舊版應該也是免不了的 ~
2011年2月2日
[無用小工具] 大樂透對獎程式
好久沒寫這個系列了
這次剛好台灣彩卷要開出100組的對獎號碼
所以坎尼順手寫了個對獎小程式 (不然100組會對到眼花吧…)
首先是 程式下載
以下為使用說明:
解壓之後會有三個檔案
Lottery.exe => 主執行檔
l.xml => 預設的開獎號碼 (可用 notepad 打開修改)
numbers.xml => 對獎號碼範例 (可用 notepad 打開修改)
數字用空格分隔,記得特別號要放在最後一碼
加入對獎號碼有三種方式
手輸,記得用空格區隔數字
用選的,選完六個號碼之後按下確定即會把選好的號碼回傳
xml 檔格式,可開啟範例檔以同樣的方式進行修改
一樣是用空格來分隔數字
確定載入自己的對獎號碼之後,即可進行對獎動作
點下右下方的對獎按鈕,程式就會自動執行對獎
並將結果顯示在號碼後方的狀態欄中 (如下圖)
以上為自得其樂的中頭彩示範
不過現在台彩網站似乎流量爆了
要得到開獎號碼可能要再等晚一點 XD
這次剛好台灣彩卷要開出100組的對獎號碼
所以坎尼順手寫了個對獎小程式 (不然100組會對到眼花吧…)
首先是 程式下載
以下為使用說明:
解壓之後會有三個檔案
Lottery.exe => 主執行檔
l.xml => 預設的開獎號碼 (可用 notepad 打開修改)
numbers.xml => 對獎號碼範例 (可用 notepad 打開修改)
預設的開獎號碼 (l.xml)
數字用空格分隔,記得特別號要放在最後一碼
主程式畫面
加入對獎號碼有三種方式
- 手輸 (用空格分隔)
- 用選的
- 載入 xml 檔
手輸,記得用空格區隔數字
用選的,選完六個號碼之後按下確定即會把選好的號碼回傳
xml 檔格式,可開啟範例檔以同樣的方式進行修改
一樣是用空格來分隔數字
對獎
確定載入自己的對獎號碼之後,即可進行對獎動作
點下右下方的對獎按鈕,程式就會自動執行對獎
並將結果顯示在號碼後方的狀態欄中 (如下圖)
不過現在台彩網站似乎流量爆了
要得到開獎號碼可能要再等晚一點 XD
如何升級 MacOS X 內建的 vim
雖然說 MacOS X 內建的 vim 版本已經很新 (v7.2, 2008-08-09),但有些軟體會利用到最新版 vim 的功能 (v7.3, 2010-08-15),如T客邦介紹的:vmail (see Prerequisites),就一定要使用 vim v7.3 才能正確運作,那麼要如何升級 MacOS 中內建的 vim 呢?
我一開始先找到了這個參考資料,直接下載最新版的 vim source code 來自己編譯 & 安裝,雖然步驟看來沒啥特別,但是後來沒有成功。又經過一番搜尋之後,我發現一個更簡單的作法,只要安裝 MacVim (a port of the text editor Vim to MacOS X,之後再開啟 terminal 修改 home 目錄下的 .profile 隱藏檔,加上以下兩行即可:
alias vim=/Applications/MacVim.app/Contents/MacOS/Vim
alias vi=vim
簡單說就是把vim這個指令作為MacVim執行檔的alias就可以了。要確認此 alias 是否生效,要先登出再登入 OS,再於 terminal 執行 vim --version 來確認目前執行的是最新版 (v7.3) 的 vim。
有些資料會寫說在 home 目錄下新增一個原本不存在的 .bash_profile 隱藏檔(跟一般 linux 一樣),而後在 .bash_profile 中加上那兩行就可以,但我測試以後發現 .bash_profile 沒有作用,在 Mac OS 中還是直接修改 home 目錄下原本就已經存在的 .profile 隱藏檔比較正確&有效。
參考資料:
我一開始先找到了這個參考資料,直接下載最新版的 vim source code 來自己編譯 & 安裝,雖然步驟看來沒啥特別,但是後來沒有成功。又經過一番搜尋之後,我發現一個更簡單的作法,只要安裝 MacVim (a port of the text editor Vim to MacOS X,之後再開啟 terminal 修改 home 目錄下的 .profile 隱藏檔,加上以下兩行即可:
alias vim=/Applications/MacVim.app/Contents/MacOS/Vim
alias vi=vim
簡單說就是把vim這個指令作為MacVim執行檔的alias就可以了。要確認此 alias 是否生效,要先登出再登入 OS,再於 terminal 執行 vim --version 來確認目前執行的是最新版 (v7.3) 的 vim。
有些資料會寫說在 home 目錄下新增一個原本不存在的 .bash_profile 隱藏檔(跟一般 linux 一樣),而後在 .bash_profile 中加上那兩行就可以,但我測試以後發現 .bash_profile 沒有作用,在 Mac OS 中還是直接修改 home 目錄下原本就已經存在的 .profile 隱藏檔比較正確&有效。
參考資料:
訂閱:
文章 (Atom)
Google Spreadsheet 裡用規則運算式
最近因為工作關係,遇到要用 Google Form 及 Google Sheet 所以研究了 Google Sheet 裡的一些 function 怎麼用 首先,分享一下如何在 Google Sheet 裡用規則運算 :D
-
今天坎尼去上課老師講了一題很有趣的題目 所以回到家坎尼就順手試驗了一下 I. XOR (exclusive OR) XOR 是邏輯運算子之一,定義為: 當兩數的值不同才為 true,相同則為 false 其他相關說明可以參考 維基百科:XOR II. 程式 以往的做法會宣...
-
好久沒開 Chart Control 議題了 剛好前陣子 Codeplex 出現可以輕鬆建立 Excel 檔案的 Library- NPOI 於是坎尼想說研究一下,看能不能把 Chart Control 匯出圖片到 Excel 中 沒想到只花了不到1小時就研究...
-
上個週末打開一個影片檔,發現字幕檔是中英文混合的,造成字幕吃掉畫面很大的空間, 打開字幕檔一看,果然每一段時間都有先英文後中文的字幕: 因此我想要自己作成「只有中文」&「只有英文」兩個字幕檔,但這個檔案有6418 行,如果要手動一行一行的刪除...