asp:Menu無法在IE8正常顯示

這個禮拜Demo系統給業主看,沒想到同事剛好前一天把NB更新到IE8,就在一進入初始頁面時就發現所有的功能都找不到勒@@(因為功能都塞在menu裡面),本來以為是我有塞圖片給menu導致IE8無法正常顯示,後來發現是微軟的問題=..=

後來google找到很多網頁都是大同小異,列出一個我覺得不錯的給大家參考
解決方法寫得很詳細,就不多說勒~

上一半的課

昨天參加MSDN研討會,努力聽到下午終於可以聽到最期待的SILVERLIGHT勒!
沒想到微軟的小姐竟然以晚上還有人要用場地為由,硬生生把未完的課終止,有夠囧的!!沒想到大公司如微軟,其員工處理調度的手法竟如此粗糙Orz..

重點是該研討會的表定時間明明就是到5:30pm,就算真的有無法調度的苦衷好勒,可是老師也只提早上課5分鐘,竟然要老師提早半小時下課,這有天良嗎T^T

希望老師再補開一堂,不然「狀態」沒上到就好像SILVERLIGHT沒有升級到3一樣@"@

HongkongToolbar

許多電台都有提供網上收聽免費服務,香港商業電台881903最顯誠意,在08年進一步提供toolbar與廣大聽眾使用,安裝完後就像google toolbar一樣會鑲在瀏覽器上,更貼心的是同時支援IE與Firefox!另外,最大的優點是避免使用商業軟體接收影音串流lag造成瀏覽器掛掉的狀況,是個小巧、介面簡單的小工具!

非常適合我這香港控啦XXXD
by the way 古巨基的聲音真是令人印象深刻,久沒聽他的歌竟然還認的出來...pu
Toolbar下載網址

安裝Northwind資料庫

開發測試階段常使用Northwind資料庫,之前偷懶都直接使用Server計畫案中的既存資料庫,今天心血來潮想說改用local端的Northwind,這才發現Express版本沒有XXD

後來google一下發現不少資訊,最後還是選擇台灣微軟官方網站之說明(個人認為說明詳細且排版清晰易讀),參考一下網址按步操作即可
http://msdn.microsoft.com/zh-tw/library/ms165732(SQL.90).aspx


小抱怨一下,剛剛使用google的Post to Blogger!小工具,結果本篇文章只要是中文字的部分全部變成亂碼,看來Andy Monat先生沒有考慮到廣大亞洲user的需求...囧

懶懶的

期末驗收通過就一直處於不想上班的狀態@@可能趕案子的壓迫感突然沒了?!
不過這幾天終於可以好好研究SL,發現還需要不少其他技術輔助才能做出實用又炫麗的網站,希望接下來可以陸陸續續寫點東西嚕 : -)

無法檢視DBML

昨天想說試試LINQ,想當然就是開個網站再加入新項目「LINQ to SQL 類別」,可是光是新增此類別就有error,造成dbml無法以檢視模式觀看,當然我們也不可能硬來...直接編輯XML,後來Google了一下找到解決的方法,參考網址如下
http://social.msdn.microsoft.com/Forums/en-US/linqprojectgeneral/thread/af45e2b7-98c5-4e12-9bc9-890ae4d03542

在這邊註明一下我的錯誤訊息,因為piggy在尋求解答時發現用英文比較好找=..=,可能使用中文版的朋友們比較少在用LINQ吧~撲
中文版錯誤訊息:自訂工具 'MSLinqToSQLGenerator' 失敗。無法擷取目前的專案
英文版錯誤訊息:The custom tool 'MSLinqToSQLGenerator' failed. Could not retrieve the current project.

以下簡單說明一下solution
1.使用Visual Studio Tools裡面的「Visual Studio 2008 Itanium Cross Tools 命令提示字元」
2.輸入devenv /ResetSkipPkgs後按下enter
3.收工

此時VSTS已經被修復並且會重新開啟,這時候再去新增一次LINQ類別就會是下面漂亮的畫面勒

共用事件處理常式

承上篇,判斷檔案存在與否已解決,下載頁面的HyperLink只要在Load事件中判斷檔案是否存在,就可動態決定要導向download page或自訂的error page,此時出現另一個窘境:如果頁面有20個載點,那就要寫20個HyperLinks_Load事件,為了不使用這種浪費資源、維護困難的笨方法,就要善用「共用事件處理常式」!


首先列出可以共用的事件處理常式如下(以下簡稱H)
Protected Sub HyperLinks_Load(ByVal sender As Object, ByVal e As System.EventArgs)
  '因為這邊的物件都是hyperlink我就偷懶不做轉型,直接以其Text屬性動態產生zip檔名
  Dim pathToCheck As String = "../download/" & sender.Text & ".zip"

 If (System.IO.File.Exists(Server.MapPath(pathToCheck))) Then
  '檔案路徑存在,將hyperlink之sender.NavigateUrl指定為動態產生的pathToCheck
   sender.NavigateUrl = pathToCheck
 Else
   '檔案路徑不存在,將hyperlink之sender.NavigateUrl指向自訂的錯誤頁面
  sender.NavigateUrl = "../myError.htm"
 End If
End Sub


再來和一般的事件處理常式比較(以下簡稱AA)
Protected Sub HyperLink1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles HyperLink1.Load
  Dim pathToCheck As String = "../download/" & HyperLink1.Text & ".zip"
  If (System.IO.File.Exists(Server.MapPath(pathToCheck))) Then
   HyperLink1.NavigateUrl = pathToCheck
 Else
  HyperLink1.NavigateUrl = "../myError.htm"
 End If
End Sub
用一般的事件處理常式,控制項越多程式碼會越龐大,在你仿照第1個控制項,做copy/paste動作撰寫其他控制項事件處理常式後,還要一個一個去改控制項的ID(注意粉紅色)!
所以事件處理常式的共用是非常重要的,除了精簡code還能避免手動更改控制項ID或其他變數時有漏改的情況產生,而且漏改通常不會無法編譯,可是每當在執行各事件處理常式時,漏改的part就是無法如願以償去執行正確的動作,此時code已經深如大海很難維護!


現在回頭看,我們已經有單一方法H來處理問題,但是H要怎麼知道是哪個控制項可引發事件?這時仔細觀察AA之所以能觸發HyperLink1的Load事件是因為有「Handles HyperLink1.Load」,所以只要在H後面加上要觸發的控制項事件即可,完整H如下
Protected Sub HyperLinks_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles HyperLink1.Load, HyperLink2.Load, HyperLink3.Load _ , HyperLink4.Load, HyperLink5.Load, HyperLink6.Load, HyperLink7.Load, HyperLink8.Load, HyperLink9.Load, HyperLink10.Load
 Dim pathToCheck As String = "../download/" & sender.Text & ".zip"
 If (System.IO.File.Exists(Server.MapPath(pathToCheck))) Then
   sender.NavigateUrl = pathToCheck
 Else
  sender.NavigateUrl = "../myError.htm"
 End If
End Sub

【注意】
1.參考網址http://msdn.microsoft.com/zh-tw/library/4ac48519.aspx
2.不想keyin也可用VSTS設計頁面(下圖),在每個控制項事件中指定「共用事件處理常式」,H就會自動為您加上要觸發的事件(黃色)。

判斷檔案是否存在

最近作了下載zip的頁面,其中載點連結都是寫死的,寫死的缺點是萬一Server還沒拿到全數的zip檔,使用者在點擊超連結時會被導向HTTP 404頁面,
我的解決方式是直接更改IIS中的「自訂錯誤頁面」。但後來PM要求不要所有的HTTP 404都導向同一個頁面,只好放棄前面偷懶的方法,乖乖去判斷載點是否存在!

Sub getFile()
  Dim pathToCheck As String = "../download/ABC.zip"
  If (System.IO.File.Exists(Server.MapPath(pathToCheck))) Then
    '檔案存在,這邊可以讓使用者下載
  Else
    '檔案不存在,跳出說明頁面或提示訊息
  End If
End sub

【注意】
1.本例之pathToCheck使用指定的路徑,亦可以用動態的!
2.若pathToCheck像本例一樣是使用相對路徑,記得在判斷檔案存在與否時使用Server.MapPath函示
3.參考網址http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.fileupload.saveas(VS.80).aspx

演唱會嘉賓

2004年何韻詩是演唱會的超重要嘉賓,不...他不是嘉賓,他根本是場場都要和mi一起演出的重要歌手!!那時候剛接觸粵語歌,認識的香港歌手沒幾個@@,以致於我現在完全想不起來2004年最精彩的紅磨坊劇中劇...哭哭>""<

現在看youtube每看一次感動一次,覺得自己真是笨蛋=..=

希望27那場來的都是我認識的歌手XXD

again

又來勒~不想再跟沒sense的人合作

改支小程式很簡單沒錯,花不到幾分鐘時間,問題是資料有問題怎麼可以叫RD偷改程式去掩飾資料的錯漏咧!!!?本末倒置嘛

唉..什麼時候才可以組成有系統、正統開發流程的開發團隊,重點是還要有決策權!
不然你幾萬筆資料隨便爛個幾筆,我都改到死嘛(@__@)

Bad Request(解決request中文傳值亂碼)

雖然撰寫程式時可盡量避免使用中文,但有些情況還是避免不了,就必須解決編碼的問題

可以使用的函數有Server.UrlDecode和Server.UrlEncode
如果是在前端(javascript)就要進行編碼工作,則是透過escape()以及unescape(),不過它們已經算是舊版的函示,建議還是使用decodeURIComponent()與encodeURIComponent()。

PS:piggy在開發時使用escape()在IE6、IE7都是沒問題的!