2009年12月26日

[Tips] 匯入 ItemTemplate 到其他機器上

在 上一篇 中坎尼介紹了如何匯出 ItemTemplate
本篇將介紹如何把 ItemTemplate 搬到其他機器上去

I. 匯入 ItemTemplate

話說坎尼小時候發現可以匯出 Template
心想「哇,這東西不得了啊,快分享給同事」就很開心的做了很多共通的頁面
但換到另一台機器時才發現...怎麼 Visual Studio 沒有匯入的選項?
所以年輕可愛的坎尼就笨笨地在另一台機器重新把 Source Code 貼上再匯出

「一定要這樣才能匯入嗎? 那要匯出的功能幹嘛?」
這個自然,只出不進非強調人性化的 Visual Studio 作為
坎尼找到許久,總算是找到了簡單的方法

II. 上一節廢話太多,真的要講如何匯入啦

首先,開啟 Visual Studio (2005、2008、2010)
選擇 Tools -> Options 

 找到 Projects And Solutions 
右邊的內容頁分別可以看到 User Project Templates Location 
及 User Item Templates Location
這兩個實體路徑就是 Templates 的讀取路徑

 此時只要簡單的把匯出的 .zip 檔,放到路徑下即可

 雖然沒有 UI 的匯入選項,但也是比手動複製 Code 好上許多

III. 新增的 Webform Item 怎麼會建置出錯?

其實這個問題印象中是 vs 2008 以後才出現的
建立好項目之後,無法直接進行建置的原因在於 .designer.cs


可以看到,雖然 .aspx.cs 的 Class 名稱已經改過,但 .designer.cs 卻沒有

要修正此項問題很簡單,首先把 Template 的檔案解壓縮,出現了五個檔案


把 aspx.cs 和 designer.cs 打開比較一下




可以發現 designer.cs 的 Class 名稱並未被修改
用從aspx.cs那邊抄來的 $safeitemname$ 取代後存檔
再將檔案壓縮成 .zip 即可 (壓縮檔變小了?!)



馬上新增個新頁面看看,designer.cs 的 Class 總算是一樣了




IV. 小結

第三小節提的這個問題,目前在 vs2010 中仍出現若有匯出 Template 需求的讀者,可以依上列的方式修改
如果有人知道 Visual Studio 哪邊可以用 UI 匯入,也歡迎留言 ^^

2009年12月25日

[Tips] ItemTemplate 讓你省去 copy/paste 的時間

今天來聊一下怎麼用 ItemTemplate
其中包含了如何匯出及匯入

I. 什麼是 ItemTemplate?

其實說到這個東西,visual studio 2005 時早已支援
(vs 2003 由於年代太久遠,目前無法考證)

其目的在於讓工廠型的頁面,直接匯出成 Template
使重覆性高的頁面無需再到處貼 code,增加工程師的產量及效率

II. 如何製作 Template?

其實很簡單,只要先製作好要量產的頁面
再點選 File -> ExportTemplate,跟著指示走即可

首先,製作好 Item




接著選 File -> ExportTemplate

接著可以看到有 Project Template 及 Item Template 的選項 
(本次範例是介紹 Item Template)


也可以選擇和這個頁面有相依的參考

再輸入相關資訊及設定顯示的 Icon 選擇完成即可
這邊可以勾選匯出時自動匯入到本機 Visual Studio


完成後去新增項目的地方,即會看到剛剛匯入的樣板


點選新增會出現提示,如果是來歷不明的樣板,建議還是先打開原始檔看一下


登登,建立成功!!! 連基本的 Source Code 也建立完成


III. 小結

ItemTemplate 對要大量生產同類型的 Code Page 很好用
和 ClassLibrary、CustomControl 有異曲同工之妙
要是三個一起用,這豈不飛天啦?!

由於本篇抓的圖太多
容待坎尼下一篇再介紹如何把 ItemTemplate 匯入到其他機器上 :D

下一篇:[Tips] 匯入 ItemTemplate 到其他機器上

2009年11月27日

[Tips] RunToCursor 讓你不必設定中斷點也能暫停


以往坎尼要用 Visual Studio 進行除錯模式
都會先在要停留的地方設定中斷點及中斷條件

 不過真的有時很懶惰只想用滑鼠,就會用到今天介紹的小技巧

I. 使用方式

首先把游標移到要中斷的地方點右鍵,選 Run To Cursor (中文好像是「執行至游標處」)
然後就會看到 Visual Studio 自己進入 debug 模式


接著只要程式運行到要中斷的地方,便會停止


可以配合快速監看式,一整個左手就是閒置狀態


不過可以看到的是,其實這邊並無中斷點
因此只要讓程式繼續進行,下次再到這個位置就不會停下來

II. 小結

此次小技巧提供給和坎尼一樣懶惰的人 :D

另外再報個小技巧給不知道的人
中斷點如果是在 for 迴圈內,不想每次都一直按執行只為了看某個變數
可以在中斷點上按右鍵設定條件,當符合條件時,程式才會中斷

今天就到這邊,下次再見 :D

2009年11月15日

Visual Studio 2010 beta2 小用心得

這幾天坎尼開始試玩 vs2010 beta 2
不僅速度比beta1提升了不少,畫面也變的更漂亮了
今天就來幾個坎尼覺得不錯改進的地方吧

I. 關閉分頁

vs2008 以前的版本,要關閉目前的頁面,都要移到右上角
一不小心還會把 solution explorer 或 server explorer 打開來 (見下圖

有時候滑鼠移太快就會觸動到把右邊面板打開的事件,這點實在很煩人
(另外用右鍵選 close this tab 坎尼也是覺得很麻煩 XD


所以這點 vs2010 改成和一般瀏覽器很像,在每個分頁的右邊放了個小 X
以後就不用把滑鼠移到遙遠的右上角去關閉分頁了




II. Intellisense 的精進

vs2008以前的 Intellisense 都是以字母開頭來進行搜尋
所以像坎尼以前要找 Gridview 的 PagerRow 就無法一次找到
因為其實物件的名稱是 TopPagerRow 和 BottomPagerRow

所以 vs2010 又加入了新解藥,把 Intellisense 改成用 filter 的方式
鍵入 Pager 就會自動把所有有關 Pager 的屬性方法通通抓出來 (見下圖

鍵入 s 時,由於關鍵字太多不易查找



再多加個 y只會濾出與 sy 相關的 System、OperatingSystem、SystemException

如何,是不是很方便啊?
簡單來講,以前的 Intellisense 是用 like 關鍵字 +%
vs2010 的 Intellisense 是用 like % + 關鍵字 + %

2010/01/28 註:其實這個說法是有瑕疵的,可以見 這篇 的補充

III. 彈跳分頁

以前的分頁頂多左右切或上下切
現在 vs2010 又多給了一個選擇:把它拉出來 (見下圖


只要在分頁的頁籤上點住左鍵往外拉,分頁就會脫離母體
其實有點像 Google Chrome 的設計

IV. 小結

之前 beta1 由於性能太差,坎尼只玩了幾次之後就沒再開過  囧>
這次 beta2 可謂是令人眼睛一亮
用過之後不僅頭腦變好了,人變漂亮了,考試也都考100分
(雖然還是有很多小bug在,但無傷大雅)
還沒試過的人快點去 下載 吧

另外還可以參考 Scott Gu 的 vs2010 介紹系列
VS2010 and NET 4 Series


2009年11月11日

自製無用小工具系列 - 語系檔案顯示器

前幾天坎尼低調了窗邊奈奈美的佈景 (見下圖


本來想說用 notepad 打開 theme 檔來看一下每個音效檔的設定
沒想到 notepad 就是那麼不爭氣的無法顯示日文



當時手邊也沒可轉換的軟體...於是就開了 visual studio 自己寫一個

I.工具 UI

在畫面上先放個 Textbox 及 Button,做選擇檔案用
接著放個 comboBox,內容物是各種可轉換的 Encoding 語系
再放個 Button 當功能執行鍵
最後加入個 Multiline 的 Textbox 來顯示轉換過的內容


 

 

 

 

 

 

 

 

II. 功能 - 取得可支援的 Encoding

在載入程式的時候
坎尼直接用 System.Text.Encoding.GetEncodings() 抓取所有的 Encoding name
並把所有可用的 Encoding Name 放到 comboBox 裡去

這邊用 LINQ 語法直接抓出名稱















補充一下,LINQ 雖然可發音為 lin cue 或 lynx
不過印象中官方是讀為 link ,因為要 link to everything (Object、SQL、XML....)
使用上還是看個人,坎尼是比較喜歡讀成 link

III. 功能 - 轉換

接著就很簡單的用 StreamReader 加上 Encoding 參數
把資料轉成想要的編碼,再顯示在畫面上
















大功告成,來看一下成果吧

















這邊選擇的是日文系統用的 shift-jis 編碼
轉換之後就可以看到日文內容了 ^^

IV. 小結

當然這個程式也可以用來轉換簡體中文之類的內容檔
有興趣的人可以下載回去玩玩 ^^

本次的執行檔下載 (source code由於沒什麼技巧,就不放了
由於有用到 Linq 語法,所以執行的使用者要更新到 .net framework 3.5 以上

參考資料
LINQ 發音
System.IO.StreamReader Constructor
System.Text.Encoding.GetEncodings()

2009年10月9日

利用 jQuery 替 GridView 加上點擊高亮顯示

在 GridView 上要做到 highlight 效果
通常會利用 mouseover 及 mouseout 兩個事件去修改背景色
之前坎尼在 MSDN 論譠看到有人想點擊後再改背景色
且點擊下一列之後,前一列要回復原來的背景色,這要怎麼做呢?

I. 畫面設定

首先,在畫面上加入個 GridView,並給予樣式
<asp:GridView ID="GridView1" runat="server" Width="450px"
CellPadding="4" ForeColor="#333333" GridLines="None">
    <RowStyle CssClass="rowstyle" />
    <FooterStyle BackColor="#507CD1" Font-Bold="True"
        ForeColor="White" />
    <PagerStyle BackColor="#2461BF" ForeColor="White" 
        HorizontalAlign="Center" />
    <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True"
        ForeColor="#333333" />
    <HeaderStyle BackColor="#507CD1" Font-Bold="True"
        ForeColor="White" />
    <EditRowStyle BackColor="#2461BF" />
    <AlternatingRowStyle CssClass="alterrowstyle" /> 
</asp:GridView>
可以看到,奇偶行的 RowStyle 分別有自己 class
樣式內容如下 (含 highlight 的樣式
.highlight
{
    background-color: Yellow;
}
.rowstyle
{
    background-color: #CCF3FB;
}
.alterrowstyle
{
    background-color: White;
}

II. jQuery 程式碼

接著在 javascript 區段內加入下列的 code
<script type="text/javascript">
    //記錄前一個 jQuery 物件及原class
    var preElement;
    var preClass;
    $(function() {
        //替 GridView1 的所有 tr 加入 click 事件
        $("#GridView1 tr").click(function() {
            //回復上一個物件的樣式
            if (preElement != null)
                preElement.removeClass().addClass(preClass);
            //取得目前點選物件
            var nowElement = $(this);
            //記錄物件,等待下次使用
            preElement = nowElement;
            preClass = nowElement.attr("class");
            //修改目前點選物件樣式
            nowElement.removeClass().addClass("highlight");
        });
    });
</script> 
只要在點擊下一列時,把記錄下來的上一列樣式給回復就好
是不是很簡單呢?  來看一下成果




















此時有人可能會有疑問:
「既然只抓取 GridView1 內的 tr,那點到 Header 不會變色嗎?」

以這個範例來講,並不會有那種情況
雖然點下 header 時,仍會把 class 附加上去

但 header 本身已有 inline-style,優先權會高於 class
所以 background-color 會維持原來的顏色

III.小結

其實以上範例也可以用單純的 DOM 加上 javascipt 來達成
(配合 GridView 的 RowDataBound)
實際做起來不難,坎尼這邊就賣個關子,有興趣的人可以自己試試 ^^

2009年10月4日

[Tips] 讓 Visual Studio 自動解析要引用的 namespace

本篇來介紹個算蠻實用的小技巧:讓 Visual Studio 自動解析該使用的 namespace

I. 問題描述

當要宣告或使用其他 namespace 的類別時,忘了是哪個 namespace 該怎麼辦呢?
(尤其是像坎尼這種老人記憶力的...

下圖旁白「啊,我忘了 Color 的 namespace該怎麼辦?」





II. 解決方式

使用 Visual Studio 的 解析 (resolve) 功能,讓 vs 自動解析要用的 namespace在上圖的 Color 字尾有出現個紅底線,把滑鼠移過去之後會出現選單 (如下圖







或是在 Color 上點右鍵選 resolve (解析) 也會出現相同的選單








此時會有兩個選項,上面選項是自動加入 using namespace




下面選項則是直接在原類別關鍵字前加入 namespace




如此一來就可以使用該類別囉 :)

III.小結

Visual Studio 真是很好用的開發工具不要再罵它開啟時為什麼會那麼慢,要多體諒陪大家熬夜加班的這位好朋友

Google Spreadsheet 裡用規則運算式

最近因為工作關係,遇到要用 Google Form 及 Google Sheet 所以研究了 Google Sheet 裡的一些 function 怎麼用 首先,分享一下如何在 Google Sheet 裡用規則運算 :D