發表文章

目前顯示的是 2009的文章

ASP.NET開發之AjaxControlToolKit的妙用(一)

圖片
撰文:吳俊毅 時間:2009/12/19 哈嘍~各位好,筆者因為工作的關係需要快速的完成許多應用程式,由於時間有限,快速開發成為重要課題,以往習慣Hot Code寫程式未免過於緩慢不符經濟效益也過於辛苦,有時客戶希望在網頁上增加一些特效,此方面目前首選應該是jQuery,jQuery對於在網頁上快速選取物件並加入CSS與特殊功能的能力非常強,他自行開發的(Wrapper)使控制HTML的能力更強,重點是效能也不會太差。不過ASP.NET上的開發jQuery需要注意的細節較多,有時會使ASP.NET的Server Site控制項失去回應伺服器事件回應的處理,當時筆者選擇以與.NET相容度較高之Ajax Control ToolKit來進行開發。 OK~我們進入今天的主題吧。當時的情形是~突然間客戶希望TextBox有一個自動完成的功能,這個自動完成並不是IE的自動完成,而是需要到資料庫去撈符合開頭字母的資料,當時筆者當然與許多資深的工程師相同就是寫Ajax用XMLHTTP去後端撈吧,在input下面秀出個DIV將符合的資料秀出來,不過基本上作法當然還有很多種!不過重點是時間有限,還有其他工作要完成,筆者只有20分鐘處理這件事,後來筆者想到Ajax Control ToolKit中有提供一個AutoCompleteExtender元件,筆者立刻將他參考進來。並透過Ajax Control ToolKit的擴充項功能掛在需要這個功能的TextBox上,這就如同使用jQuery去選擇該input相同,如下圖: 當選擇加入擴充項後會出現如下視窗: 選擇AutoCompeteExtender後在該TextBox會出現Extender屬性,如下圖: 圖中為該AutoCompleteExtender元件可設定之屬性,同樣也可以在原始檔中編輯,也有安裝Intellisence必要的項目到IDE工具中,如圖中可以設定CompletionInterval (顯示下拉的時間間隔),與completionSetCount (最多顯示在下拉中的數量)等,功能相當多,通常會透過WebService取資料,透過智慧標籤的 Add autocomplete page method.功能即可快速的加入該Web Service Method。 上面的動作會在目前Extender所在的Web Page的C

Silverlight動畫與執行

圖片
撰文:吳俊毅 時間:2009/12/05 筆者超久沒寫文章了,因最近新公司實在太忙,平常每天就在加班,假日還要來,所以...OK~筆者今天要介紹關於執行Silverlight動畫的技巧,相信許多讀者都見識過WPF的動畫,在Kaxaml中有一個有趣又簡單的範例(跳動的彩球),如下: 筆者就直接拿他來說明,OK~它的Source Code如下: 由於預設的範例中已設定了EventTrigger,所以畫面一載入立刻就會執行動畫,且也將Storyboard的Duration屬性設為"Forever"了,所以動畫會一直無限次執行。 如果們希望動畫透過按下一個BUTTON才執行的話可以進行如下修改: 如上XAML程式碼,取消EventTrigger,並將Storyboard放入Grid.Resources中,原先的五個Ellipse須保留在Canvas中,然後再加入一個BUTTON。 接著在BUTTON的OnClick撰寫程式碼 (一行而已)         private void button1_Click(object sender, RoutedEventArgs e)         {             Storyboard1.Begin();         } 執行畫面如下:(按下Play後才會執行動畫)

Web封裝專案教學

圖片
要封裝Web專案其實方式有很多種,下面介紹一種蠻簡單的方式。 1.如果您有一個WebSite的專案,您可以滑鼠右鍵操作,如下: 2.選擇 Web 安裝專案 3.接著在WebSetup1進行如下操作: 4.因為目前畫面中只有一個網站專案,因此直接點選確定 5.完成這個動作後,如下圖,在WebSetup1的下方會出現一個 "內容檔 從X:\XXXXXX (作用中)" 這時您只要直接編譯,編譯完成會產出一個WebSetup1.msi的安裝檔:   不過要注意一點,如果要在Windows Vista/7 安裝此封裝檔,必須安裝 [IIS 6 管理相容性]

再談XAML與WPF

圖片
撰文:吳俊毅 時間:2009/6/11 在筆者先前討論過XBAP應用程式後再一次回到WPF的主題,在這個章節中筆者要說明XAML與WPF之間的關係,讀者先往下看幾個主題。 1. 再談XAML 什麼是XAML呢,XAML是(eXtensible Application Markup Language)的簡稱,XAML發音為”zammel”,而XAML為一種標籤語言,關於這個部分市面上許多書籍都已經講過太多了筆者快速的帶過就好,簡單的說XAML承襲XML的Well-Format文件的所有特性,在這裡微軟透過XAML描述並呈現WPF應用程式的外觀,它可以設置.cs的後置檔,程式的事件與運算邏輯可由後置檔案完成,WPF可在<Window>標籤內的x:Class=”命名空間.類別名稱” 如下: <Window x:Class="WpfHelloWorldApp.Window1"> </Window> 當然XAML檔案不一定要有後置檔,如上程式若去除掉x:Class=”WpfHelloWorldApp.Window1” 的敘述即表示沒有後置檔案,而通常沒有後置檔的XAML程式碼通常稱為loose XAML(鬆散的XAML),這種檔案通常只是將XAML當做文件來使用,如XPS Document或WF的Flow Document文檔等,而XAML檔案執行時會預先被編譯成BAML(Binary Application Markup Language)的二進位直接檔案,但它是一個副檔名為.g.cs的檔案,在使用正式版本的Visual Studio IDE工具後您通常無法在檔案總管中察覺這個檔案的存在,若您在InitializeComponent()點選右鍵a”移至定義”所看到的程式內容便是IDE工具(auto-generated)自動產生的BAML內容,它會在obj\Debug 下產生,而同樣是一個繼承Window的類別,只是會多實作IComponentConnector介面,在InitializeComponent() 中會透過System.Windows.Application.LoadComponent()方法將XAML的內容讀取進來,筆者擷取一段BAML範例內容如下: public partial class Window

Silverlight 自定義控制項類別庫程式設計

圖片
文:吳俊毅 日期:2009/5/18 準備環境: 在開發Silverlight控制項之前,筆者還是要來確認一下讀者環境(只有Silverlight會如此),因Silverlight Tool Kit到了2.0一樣歷經多次的改版,不同版本的Tool Kit恐會造成執行結果的差異,所以請讀者依照筆者環境如下: 1. Visual Studio 2008 Standard或更高的版本,筆者使用Team Syatem,不過基本上這沒有影響,下面第2項則一定要安裝。 2. Visual Studio 2008 SP1 3. Microsoft® Silverlight™ Tools,版本代碼為(9.0.30729.146.03),可在下列網址下載 http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=c22d6a7b-546f-4407-8ef6-d60c8ee221ed 。 需要注意,Microsoft® Silverlight™ Tools必須下載SP1的版本,否則無法安裝成功,至於Microsoft Expression Blend 2工具讀者可以自行選擇要不要安裝,本文不會使用到此工具。 安裝完成Visual Studio 2008環境等相關版本應如下圖: 好!環境確認完畢之後筆者要開始進入今天的主題,我們要來開發一個身分證字號檢查的TextBox控制項,當然筆者會繼承Silverlight的TextBox控制項來實做,首先開一個Silverlight應用程式專案,並命名為SilverlightControlTestApp,並使用在ASP.NET專案中開起Silverlight專案,如下圖: 這兩種類型不是今天討論的重點,有興趣的讀者可參考其他相關文章,在專案開起完成後讀者在方案總管應會看見兩個專案,一個是SilverlightControlTestApp另一個是SilverlightControlTestApp.Web,最上面的SilverlightControlTestApp才是Silverlight專案,它的編譯結果會產生.xap的目的檔案。接著開啟Page.xaml畫面設計好Silverlight的

Windows AIK 套件基礎應用

圖片
文:吳俊毅 撰文日期:2009/3/24 這已經不是新的主題了,或許這樣的安裝程式的內容有些冷門,以前有人問筆者此套件究竟應該歸類為安裝佈署程式還是純粹備份資料的套件?所以我想許多人對於Windows AIK的定義還不是非常清楚,微軟對於此套件也沒有大肆宣傳,導致許多人面對新環境的安裝佈署需求時除了想到Installer或ClickOnce之外也不知道還有Windows AIK了,筆者第一次接觸Windows AKI是在2006年第二季的一個Windows Vista的TechNet的研討會,所謂的Windows AIK是Windows Automated Installation Kit的簡稱,它是Microsoft Solution Accelerator for Business Desktop Deployment 的其中一個功能,它是一個Microsoft提出針對Windows與Office有效率的規劃,部署,建置的一個完整方案,有人直接簡稱BDD,而佈署的客戶端必須安裝一個加速器,這個加速器稱做Microsoft Business Desktop Deployment Accelerator,安裝完成之後,內含一些腳本與一些程式檔。 由於BDD這套解決方案主要目的就是為了幫助企業在佈署客戶端電腦時所遭遇到的一些存在已久的問題,同時又能夠提高企業佈署用戶端電腦的效率,簡單的說,如果你要為您的企業提升佈署大量用戶端時您可以使用BDD,當然對單機來說BDD可能就沒什麼實際的意義了。 關於筆者的操作環境: 筆者的Server端環境直接安裝Microsoft Windows AIK,用戶端的BDD有2.5與3.0版,差別在於2.5是安裝在Windows XP的,3.0則是用在Windows Vista,所以筆者會使用一個Windows XP的VM環境來模擬,Windows AIK套件可以在 http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=94bb6e34-d890-4932-81a5-5b50c657de08 的網址下載 BDD 2.5與BDD 3.0可在這個網址下載: http:/

如何手動或程式化產生XPS文件

圖片
文:吳俊毅 時間:2009/1/18 何謂XPS文件 XPS為(XML Parse Specification)的簡稱,我們知道XML已經是開放式資料交換的標準,於是以XML為基礎要提供一個更穩固的,開放的可信賴的電子文件交換格式應運而生,就是XPS,它可以經由硬體或是軟體來閱讀並提供更佳的列印品質,並可加入簽章容易用於機密文件的封存,微軟在Office 2007也已經完整加入此功能,Word 2007的docx其實就是XML Parse Specification文件格式。在.NET Framework 3.0中提供完整的API讓您能輕易的發佈或是匯入XPS文件,或是與WPF應用程式的整合等,今天筆者將完整介紹XPS,產生XPS方式,如何使用.NET Framework 3.o的API來產生XPS格式文件,廢話不多說,我們開始吧! XPS文件的結構 所謂的XPS文件其實是一個ZIP檔案,若讀者將其附檔名改成.zip使用Winzip或是一些支援ZIP的檢視器即可看見期內容,當然Windows XP/Vista的檔案總管本身即也支援ZIP解壓縮。 雖然我們通常並不會直接去編輯XPS文件的壓縮內容,但了解其內部包裝的內容對於我們快速的了解XPS是有幫助的,一個XPS文件的內容如下: XPS的物件階層 XPS文件定義在.NET Framework 3.0定義在XpsDocument類別中,該類別則定義在System.Windows.Xps.Package;的命名空間中,XpsDocument為一個完整XPS檔案組成,它定義了XPS整個的邏輯結構,由於一個XpsDocument是允許包含多個文件,這些文件則由FixedDocumentSequence來描述其順序關係,所以通常一個XpsDocument下會包含一個FixedDocumentSequence物件,FixedDocumentSequence下面會有FixedDocument物件來包裝FixedPage物件,整個XpsDocument結構如下圖: 產生XPS文件的幾種方式 1. 使用Microsoft XPS Document Writer印表機 2. 使用.NET Framrwork 3.0的System.Windows.Xps.Package命名空間提供的類別來產生 要產生XPS文件最快的方式當然是使用Micr

WPF 與XBAP應用程式(2) 之 如何佈署XBAP應用程式

圖片
文:吳俊毅 時間:2009/1/8 接續第一篇WPF 與XBAP應用程式,我們已經可以正常的在Visual Studio 2008中正常的執行WpfBrowserBrushTest這個專案,但是這樣還沒完,我們必須將它佈署至IIS上頭,這樣才能夠使一般的使用者使用一般網站一樣的在IE中開啟這個網頁。 首先切換到專案的屬性畫面,並點選發行,表示我們將使用ClickOnce方式佈署,注意:這個動作需要以管理員身分來執行Visual Studio 2008,畫面如下:   請點選發行精靈按鈕,並如上圖的步驟建立一個名稱為WpfBrushTest的Web應用程式。若不是以管理員身分執行Visual Studio 2008,”本機IIS”按鈕是無法點出如圖中以結點方式顯示的本機的Web伺服器的畫面。   由於目前ClickOnce以內建在Visual Studio 2005/2008的專案屬性視窗內,ClickOnce為微軟推出,一套簡化許多安裝程序的一套安裝程式的Framework,有興趣的讀者可以參考筆者另一篇ClickOnce的文章!我們先走完我們的流程吧。 上面的動作很迅速的在IIS裡幫我們建立出一個應用程式,由於筆者使用Vista,Vista內建的是IIS 7的版本,如果讀者使用的Windows 2003或Windows XP等畫面可能會有些不太一樣,如下,筆者打開IIS 7看見並可點開WpfBrushTest站台   接著請讀者切換到內容檢視畫面,IIS 6或IIS 5.5不需要做此動作,然後在WfpBrowserBrushText.xbap按滑鼠右鍵點選瀏覽,表示直接執行這個應用程式,這時候IE上頭會顯示 未受與信任,如下: 如果點選開啟錯誤按鈕可以看見如下的詳細錯誤: 錯誤詳細資料 執行此作業時,偵測到下列錯誤。 * [2009/1/10 下午 11:05:15] System.Deployment.Application.TrustNotGrantedException (未知的子類型) - 使用者拒絕將執行所需的權限授與此應用程式。 - 來源: System.Deployment - 堆疊追蹤: 於 System.Deployment.Application.ApplicationTrust.Requ