2009年11月29日 星期日

關閉 RadWindow 所開啟的視窗

呼叫一個 RadWindow 並讓這個 Window ShowModal
是件容易的事

但是要讓這個 Window 關閉回到呼叫他的視窗該如何做
找了一下範例
發現 Telerik 線上文件也有人再問這個問題

function GetRadWindow()
{
var oWindow = null;
if (window.radWindow)
oWindow = window.RadWindow; //Will work in Moz in all cases, including clasic dialog
else if (window.frameElement.radWindow)
oWindow = window.frameElement.radWindow;//IE (and Moz as well)
return oWindow;
}

// 按下關閉或是離開的按鍵
function Button2_onclick() {
GetRadWindow().Close();
}

2009年11月28日 星期六

.NET Excel

Excel 在 Server 端讀取或是產生
已經變成在商業應用程式中常見的需求

之前利用 VSTO 或是利用 Automation 的方式操作
會遇到幾個瓶頸
1. 慢 (1 sec vs. 40 sec)
2. 應用程式記憶體沒有正常的釋放掉
3. 安全考量 (前兩個問題就很頭痛了,這點也就不需要錦上添花了)

微軟還大書特書的一篇告知開發者不建議 Automation 的方式在伺服器端操作
但是微軟也沒有提出這個問題有何好的解決方法

最近發現 3rd party
有幾個好工具
2. NPOI

Aspose 的 Solution 比較廣泛,除了 Excel, Word, Powerpoint 等Office 文件都可以支援, 當然也不便宜, 使用前請考慮專案預算及 License 策略

NPOI 目前是Free, 但只有 Excel
Java fans 應該不陌生
因為NPOI 就是 .NET POI 啦

2009年11月24日 星期二

一月初到十月底的查詢

這個題目似乎很簡單

假設資料庫中有個表格如下
CREATE TABLE TX (DT DATETIME, EVENT VARCHAR(100))

一般都會以下的查詢

SELECT EVENT FROM TX WHERE DT BETWEEN '2009/1/1' AND '2009/10/31'

但陷阱會出現在 '2009/10/31' 這邊
因為 '2009/10/31' 是代表 '2009/10/31 00:00:00'

下面這筆資料就不會被擷取到
INSERT INTO TX VALUES('2009/10/31 10:10:10', 'SOMETHING WRONG')

所以敘述應改改為

SELECT EVENT FROM TX WHERE DT >= '2009/1/1' AND DT < '2009/11/1'
或是
SELECT EVENT FROM TX WHERE CONVERT(VARCHAR(8), DT, 112)
BETWEEN '20090101' AND '20091031'

會比較好

在 Oracle 也是一樣
SELECT EVENT FROM TX WHERE DT > to_date('2009/1/1', 'YYYY/MM/DD') and DT < to_date('2009/11/1', 'YYYY/MM/DD');

Trunc

Oracle

select trunc(1.3)from dual

SQL Server

select cast(1.3 as int)

結果相同.

2009年11月23日 星期一

資料庫日期函數

整理一下資料庫的日期函數
SQL Server:

有時需要日期 YYYY/MM/DD (字串格式)
SELECT CONVERT(VARCHAR(10),GETDATE(),111)
有時需要日期 YYYY/MM/DD (日期格式)
SELECT CAST (CONVERT(VARCHAR(10),GETDATE(),111) as datetime)

Oracle

有時需要日期 YYYY/MM/DD (字串格式)
SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD') FROM DUAL
有時需要日期 YYYY/MM/DD (日期格式)
SELECT TRUNC(SYSDATE) FROM DUAL

好像 Oracle 的比較直覺

至於時間部分
SQL Server
SELECT CONVERT(VARCHAR(8),GETDATE(),108)
SELECT TO_CHAR(SYSDATE,'hh24:mi:ss') from dual
好像 Oracle 也比較直覺

2009年11月21日 星期六

Windows Server 2000/2003 遠端連線的上限

通常只能同時2人連線, 第三人連進去就反應

"遠端電腦的連線已經超過最大極限"

這個問題主要是 Windows 出廠的限制,
修改群組原則 (Group Policy) 就可以解決


執行 gpedit.msc
在 本機電腦原則>電腦設定>系統管理範本>Windows元件>終端機服務 的<限制連線數目>
把它啟用並設定新的欲連線人數

打完收工...

telerik, Infragistics , devexpress trend 分析

看來這三家在 2009 年有比較大的分水嶺差別
目前 Telerik 領先其他對手

資料來源

RadGrid 擴充欄位處理

一個簡單的範例
要從下面的 SQL 取出資料

select name "姓名", grade "年級", id 學號 from student

想要產生以下的結果

學號 姓名/ 年級
A0001 Philip
3
A0002 Jersey
3


在 RadGrid 要如何實作?

1. 在 RadGrid 中利用 Property Editor 加入一個 Column (Bound Column) 並定義為 Template Column
可利用 Convert this column into Template Column
PS. 不要忘了原先的姓名與年紀兩個欄位,不過要把他們 Visible 變成 False

<telerik:GridTemplateColumn UniqueName="column"  HeaderText="姓名/ 年級">
            <EditItemTemplate>
                <asp:TextBox runat="server"></asp:TextBox>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label runat="server" ID="DATA"></asp:Label>
            </ItemTemplate>
        </telerik:GridTemplateColumn>

在 .aspx 中會產生對應的一個 ItemTemplate, Telerik 會先放好一個陽春的 asp:Label 在那邊
記得將個 ID 補齊, 以便後面的程式在 Data Bind 時把資料寫進去

2. 補上 RadGrid.DataItemBound 的事件
3. 當 DataItemBound 被 Trigger 時執行以下的 Code

 protected void Mytable_ItemDataBound(object sender, GridItemEventArgs e)
    {
        // 確定是否是該對應的 SourceId, 其實也可以不用一定要判斷,有時 DataSourceID 可能不會用到
        if (e.Item is GridDataItem && e.Item.OwnerTableView.DataSourceID == "SqlDataSource1")
        {
            Label lbl = e.Item.FindControl("DATA") as Label;
            lbl.Text = (e.Item as GridDataItem)["姓名"].Text" + "<br>" + (e.Item as GridDataItem)["年級"].Text";           
        }
    }


2009年11月19日 星期四

Web.Config 的抓取 ConnectionString

利用 C# 抓取 Web.Config 中的 ConnectionString


String ConnectionStr =
ConfigurationManager.ConnectionStrings["您的設定"].ConnectionString;

RADGrid DataKeyNames vs SelectedValues

利用 RADGrid 可以完成很多事情
但是有些小地方沒有注意
他可是理都不理您

RadGrid 中 有一個屬性稱為 DataKeyNames
若要 Server 端的應用程式抓到前端使用者選擇的列 (Row)
DataKeyNames 不設,系統永遠都是傳回空值
剛好自己有一個 Sample 可以 Work
原來是系統會去判斷是否有 PK
並決定 DataKeyNames 的組合

萬一沒有的話
鄉親啊
一定要自己設
因為自己被埋伏在這邊好久, 大概花了一個小時才解決這個問題.

另外 DataSource 與 DataSourceID 的差異
在於Dataset 排序時, 資料是否可以重送
還是選擇 DataSourceID 可以省點開發的時間


另外, 若不採用 DataSourceID 而是自己建立的 Datatable
要記得在 RadGrid.NeedDataSource event 對 source 物件補上對應的 DataSource
Ex:
protected void MYTABLE_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
// 從 Session 抓到的物件
DataTable t = (DataTable)Session["MYTABLE"];
// 補上對應的 DataSource
(source as RadGrid).DataSource = t;

}

2009年11月18日 星期三

紐西蘭將給三個月免簽

雖然去過了紐西蘭,但是以後有機會還可以去
尤其是但尼丁與藍眼企鵝..


免簽證再添一國 外交部:紐西蘭將給三個月免簽

  • 2009-11-18
  • 新聞速報
  • 【中時電子報/綜合報導】

繼英國及愛爾蘭之後,外交部今(18)日再度宣布重大領務訊息:紐西蘭也將從十一月底開始,給予台灣遊客三個月免簽證的優惠

根據紐西蘭移民局最新公告,從2009年十一月三十號開始,持台灣護照的人士,凡是商務旅遊、探親訪友或是短期遊學,不超過三個月者,不需要申請簽證,也就是三個月免簽。但是如果在紐西蘭停留超過三個月或是要居住、工作、結婚及讀書等的話,還是必須依照程序申請簽證。

根據了解,這項計畫早從今年年初開始,紐西蘭移民局就著手研究簡化簽證門檻審核程序,以促進旅遊、遊學與商務交流;給予持台灣護照的旅客三個月免簽證,就是這個計畫的一部份。

不過紐西蘭方面也強調,符合這項計畫的台灣護照持有人,如果要獲得三個月免簽,除了必須是台灣地區的合法居民外,同時也要符合「身心健康」、「有明確行程安排」與「相關財力證明」等三要項。

2009年11月17日 星期二

JotForm

有了 Jotform 作 Prototype 就輕鬆了


2009年11月14日 星期六

遠端電腦需要網路層級驗證 (暈)

Windows XP 連 Vista/ Windows 2008 會遇到的連線問題
這個網站的解法有效又快 (連結)
推薦!

記得更新完畢 Registry 後,需要重新開機..

2009年11月9日 星期一

認識好油/油鍋冒煙才炒菜 你錯啦!

2009/11/09
【元氣周報/記者張耀懋/報導;諮詢/永和耕莘醫院營養師陳奕翰】

(記者陳立凱/攝影)
為了家人健康,蕭太太購買價格較高的冷壓橄欖油,煎煮炒炸都用同一瓶,沒想到吃了半年後,先生體檢結果滿江紅。

原來冷壓橄欖油只適合「低溫烹調」,若用來炒菜、炸油,反而會形成回鍋油。這是前陣子的新聞事件,顯示民眾對「好油」、「正確用油」的認知還有待加強。

本期元氣除了介紹買油用油觀念,還由南到北尋找阿嬤時代、古法壓製的古早油…

各類油脂發煙點
茶油/252℃
大豆沙拉油/245℃
紅花籽油/229℃
精製豬油/220℃
葵花油/210℃
玉米油/207℃
奶油/207℃
橄欖油/190℃
麻油/177℃
花生油/162℃

1、聰明選油

彰化秀傳醫院營養部主任張水秀指出,油品都含飽和脂肪、單元不飽和脂肪酸、多元不飽和脂肪酸,只是比率不同。

飽和脂肪酸:動物性油脂及椰子油、棕櫚油、瑪其林、酥油等含反式脂肪酸的氫化植物油,都是屬於飽和脂肪酸的油,會增加心血管疾病發生風險。

不飽和脂肪酸:橄欖油、葵花籽油、芥花油、花生油等油品含單元及多元不飽和脂肪酸,對心血管危害較少,但不耐高溫炒炸。

精製油加工過 已非好油

永和耕莘醫院營養師陳奕翰提醒,市面上精製油一定要慎選。許多廠商為迎合國人大火炒菜習慣,把優良進口橄欖油或其他食用油再精製,又多了一道氧化過程,就不能算是我們說的「好油」了。

最正確的做法,是買未精製的植物油,做中、低溫烹煮。

2、正確用油

「滋!滋!滋…」一道道白煙竄起,王太太忙不迭地倒入青菜,快炒三分鐘起鍋,一氣呵成。香氣雖四溢,看在營養師眼中,心肝揪成團。

竹筷試溫175~195℃下鍋

如果你是冒煙才開始炒菜,那就大錯特錯了。彰濱秀傳醫院營養科組長王馥祁提醒,熟調食物時,油溫不可過高,在175~195℃較適當,不要等冒煙才下鍋,因為這個溫度不但可以保留植物油中的多元不飽和脂肪酸含量,且可以避免不飽和脂肪酸冒煙時與空氣中的氧結合產生黏膠,附著在廚具上,不易清洗。

王馥祁建議,要知道油溫是否適中,可以一根竹筷插在油中試試,當筷子周圍開始出現小泡沫時,即為煎、炸或炒的最適當溫度。

油炸用油 發煙點要190℃以上

王馥祁說,食物加熱時,剛起薄煙時溫度稱「發煙點」,此時油脂品質開始變劣。發煙點可作為油脂精製程度和油脂新鮮度之指標。基於安全和經濟,用來油炸食物之油脂其發煙點最好在190℃以上。

瀝乾食材 避免加速酸敗

好了,抓緊食用油最佳烹煮溫度後,可以準備食材了。食材清洗完,切記將水分儘量滴乾,因為水分不但會使油鍋起泡、飛濺,同時也會促進水解反應,加速水解性酸敗。

勤撈碎屑 油炸鍋面宜小

下鍋了。看著食材在鍋中翻騰,別忽略油鍋邊邊的屑屑。油炸時,落入油中的麵粉、麵包屑、食物碎塊,應不時撈走,因為這些屑屑會加速油脂酸敗。此外,鍋面不可太大,宜面小、鍋深,可以減少油脂與空氣接觸的面積。

油炸剩油 炒菜盡快用掉

起鍋了,剩下的油脂怎麼辦?陳奕翰提醒,炸過的油用來炒菜為宜,不宜再用來油炸,且應儘快用完,切勿反覆使用。當油顏色變深,質地變稠,油脂混濁,使用時產生如螃蟹吐出的氣泡時,就應丟棄,不可再用。

3、健康吃油

1.水油炒:先放水,使用中、小火,等到水稍微滾了,再放油。這種做法為「水油煎法、炒法」。若直接用油熱鍋,溫度會直逼200℃至300℃,油質會變化並冒煙。

2.水煮法:水煮菜,將菜撈起,再拌油和調味。

油品與適用烹調

1.適合涼拌(49℃以下):除了常溫下是固體的奶油、豬油、椰子油、酪梨油與反式脂肪油外,任何食用油都適合。亞麻仁油因為營養價值高,建議生吃才不易破壞。

2.只適合水炒(100℃)、不可火炒:葵花油、菜籽油。

3.只適合中火炒(163℃)、不適合煎炸:冷壓初榨橄欖油、大豆油、玉米油、花生油、胡桃油、芝麻油、奶油、豬油。

4.可以大火炒或煎炸(190℃):葡萄籽油、杏仁油、榛子油、茶油、酪梨油。

各種油脂營養價值:

豬油:含花生四烯酸,這是它常被詬病處,因這成分會誘發身體發炎。不過,豬油中含有月桂酸,可抗菌、抗病毒、提升免疫力。此外,豬油穩定性高、不易變質,較耐高溫烹調。

橄欖油:含較高的單元不飽和脂肪酸,血脂肪不易增加,降低心血管病變的機會。且含抗氧成分,可抗老化。

葵花油:最常見的是亞麻仁油酸葵花籽油。有高成分的多元不飽和脂肪酸或稱亞麻仁油酸,是一種對人體相當重要的脂肪酸。

葡萄籽油:不含膽固醇和鈉。所含亞油酸具防止血栓形成、擴張血管的作用。是目前已知亞油酸含量最高的植物油之一。

2009年11月5日 星期四

HTC ActiveSync 遇到連線的問題

我的鑽石機利用 ActiveSync 4.5 與電腦連線
在家中的 PC 連線非常的非常順利
但是在 Notebook 每每都遇到 "正在擷取設定中", 反正就是不能連線

這個問題困擾我兩個多月

後來發現在手機中從 設定-> 連線 -> USB 到 PC 中
有個選項 "使用進階的網路功能"
不要選擇它, 不能連線的問題就解決了

Mobile 01 有討論這個問題
但是都沒有正面的說明為何不要勾選與勾選的差別
Anyway, 頭痛的問題解決了