2010年10月23日 星期六

圖檔放在dll 中, 如何在網頁中動態參考?

這是同學在ASP.NET課程問的問題.

解法

step1: 建立Class Library

step2: Add Reference : System.Web

step3: 將圖檔放入專案中, 並設定檔案屬性為 – Embedded Resource

step4: 在Class1.cs 的 Class 之前 宣告 WebResource

using System.Web.UI;

[assembly: WebResource("命名空間.圖檔.gif", "image/gif")]

step5: Build 專案

step6: 在Web Site –> Add Reference –> step1 的 Class Library

step7: 在網頁上放入Image或ImageButton

step8: 在Page_Load 事件 --

Page.ClientScript.RegisterClientScriptResource(typeof(MyScript.Class1), "MyScript.button_more07.gif");

ImageButton1.ImageUrl = ClientScript.GetWebResourceUrl(typeof(MyScript.Class1), "MyScript.button_more07.gif");

 

完成.

2010年10月8日 星期五

WPF MVVM 的專案Template 下載

開發WPF應用程式的Design Pattern – Model-View-ViewModel.

若要開發需自行從WPF 應用程式專案建立MVVM所需的基本內容, 如果需要像ASP.NET 的MVC 從專案範本建立, 可以從 New Project 的左邊畫面按 [Online] –> WPF , 右邊畫面 雙擊 [WPF MVVM Application] 即可下載安裝這個範本 .

WPF MVVM Application 專案範本

建立專案之後便可看到Solution Explorer 已經先建立好必要的目錄及類別:

WPF MVVM Project

2010年7月6日 星期二

Visual Basic 2010 開發實戰及書系即將上市囉~

努力了半年之久, 終於完成了!!


天瓏有預售唷!!

2010年6月11日 星期五

ASP.NET Chart 控制項部署問題

最近將有包含用到Chart 控制項進行部署到iis, 部署後執行出現這個錯誤:

image

跟著網頁提示的錯誤訊息進行修正:

  1. 在Web.config 的<system.webServer>區段加上:
    <validation validateIntegratedModeConfiguration="false"/>
  2. 配合以下設定, 在C磁碟建立 TempImageFiles 目錄: 
    <appSettings>
      <add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />
    </appSettings>

重新部署後就可以順利執行了!!

image

2010年3月30日 星期二

VS2010 的 Crystal Report 不見了!

負責Crystal Report 產品的同事告訴我說, VS2010裡不會在放Crystal Report, 必須另外下載!

拿到VS2010 Beta 時打開VS的專案範本, 有看到Crystal Report的範本:

1

一直很疑惑, 有啊!! 還在啊!!

昨天心血來潮真的去開一個Crystal Report的專案, 得到這個畫面:

2

果然, 需要另外下載…

是 Microsoft 有了自家的 Report 產品, 就不主動內建Crystal Report , 還是其他原因呢? (不得而知)

不過, 至少還留著專案範本, 留個Download 的 Link 位置, 也算是一種友善吧!!

2010年3月25日 星期四

WPF資料繫結的驗證方式

WPF資料繫結的驗證方式作法有三種:

  1. 使用ValidationRules
  2. 使用ValidatesOnDataErrors
  3. 使用ValidatesOnDataException

這三種方式都是Bindng物件的屬性, 作法卻不大相同.

使用ValidationRules

必須建立一個類別並繼承ValidationRule, 在裡頭的Validate方法撰寫驗證程式碼.

然後在XAML上必須這樣寫:

<DatePicker Grid.Column="1" Grid.Row="2" Name="DatePicker1" >

<DatePicker.SelectedDate>

<Binding Path="CreationTime">

<Binding.ValidationRules>

<local:DateRangeValidationRule />

</Binding.ValidationRules>

</Binding>

</DatePicker.SelectedDate>

</DatePicker>

這是最早出現的作法(.net 3.0), 好處是驗證邏輯是獨立的類別可以重複使用, 缺點是太複雜了!!

***Silverlight 並不支援這種做法.***

使用ValidatesOnDataErrors

只要在資料來源的類別中實作IDataErrorInfo介面, 在Item索引子中實作檢查欄位驗證的邏輯.

然後只要設定Binding物件的ValidatesOnDataErrors屬性為True就會有效果.

.net 3.0sp1以後才有的功能. 好處是可以直接在資料來源的類別實作檢查欄位驗證的邏輯. 缺點是驗證邏輯無法重複使用 (不過驗證邏輯需要重複使用的機會有多少?).

***Silverlight有支援這種做法.***

使用ValidatesOnDataException

直接在資料來源的類別中的屬性的Set區段中撰寫驗證邏輯, 並在驗證發生問題時丟出錯誤(throw exception)

但在XAML中要設定ValidatesOnDataException為True及ValidationRules指為ValidatesOnExceptions.

<Binding Path="CreationTime" ValidatesOnDataException=True>
<Binding.ValidationRules>    
     <ExceptionValidationRule />
</Binding.ValidationRules>
</Binding>

.net 3.0sp1以後才有的功能. 好處是類別的程式碼寫法比較直覺, 也不需實作任何介面. 缺點是還是要手動打XAML(Visual Studio 2010有Binding 的屬性視窗, 但並沒有ValidationRules的選項, 所以要自己打XAML)

***Silverlight有支援這種做法.***

2010年3月24日 星期三

我愛Visual Basic 2010

LINQ語法是可以是一串很長的指令, 在C#裡並不覺得很長的指令有什麼困擾, 反正按個Enter 換行就好, 程式仍可以很好閱讀.

於是Visual Basic 2010 為了LINQ語法新增一個功能, 就是可以在很長的LINQ或方法參數上換行不需加上”空白 底線”

不用加空白底線

雖然早就在Visual Basic 2010的Beta 版就知道這項功能, 但這次寫書用到大量很長的Visual Basic程式時…

心中不免讚嘆”我愛Visual Basic 2010”!!