2013年3月24日 星期日

asp.net中DataBinder.Eval的用法總結


DataBinder.Eval總結一、DataBinder.Eval的基本格式

在綁定數據時經常會用到這個句程序:<%# DataBinder.Eval(Container.DataItem,"xxxx")%>或者<%# DataBinder.Eval(Container,"DataItem.xxxx")%>

今天又學到一種,而且微軟也說這種方法的效率要比以上兩種高。

<%# ((DataRowView)Container.DataItem)["xxxx"]%>

很有用的,這樣可以在前臺頁面做好多事情了。

還要記住要這樣用必須要在前臺頁面導入名稱空間System.Data,否則會生成錯誤信息。

<%@ Import namespace="System.Data" %>

這種用法其實和<%# ((DictionaryEntry)Container.DataItem).Key%>是一個道理。

Text='<%# DataBinder.Eval(Container.DataItem, "字段") %>'
這樣的方法是最快的

Text='<%# GetPrice() %>'
也可以綁定方法,但方法要是public的

Text='<%# "CarDetails.aspx?CarID=" + DataBinder.Eval(Container.DataItem, "CarID") %>'
還可以連接多個字段

關鍵是Container這個東西,它比較神秘。它的名稱空間是System.ComponentModel。對於它我還需要進一步理解。

二、DataBinder.Eval實現判斷選擇
<asp:TemplateColumn HeaderText="性別">
<ItemTemplate>
<%# DGFormatSex(Convert.ToString(DataBinder.Eval(Container.DataItem,"xb"))) %>
</ItemTemplate>
</asp:TemplateColumn>

cs裏定義DGFormatSex方法
protected string DGFormatSex(string xb)
{
if(xb == "1")
return "男";
else
return "女";
}

DataBinder.Eval用法範例

//顯示二位小數
//<%# DataBinder.Eval(Container.DataItem, "UnitPrice", "${0:F2}") %>

//{0:G}代表顯示True或False
//<ItemTemplate>
// <asp:Image Width="12" Height="12" Border="0" runat="server"
// AlternateText='<%# DataBinder.Eval(Container.DataItem, "Discontinued", "{0:G}") %>'
// ImageUrl='<%# DataBinder.Eval(Container.DataItem, "Discontinued", "~/images/{0:G}.gif") %>' />
// </ItemTemplate>

//轉換類型
((string)DataBinder.Eval(Container, "DataItem.P_SHIP_TIME_SBM8")).Substring(4,4)

{0:d} 日期只顯示年月日
{0:yyyy-mm-dd} 按格式顯示年月日
{0:c} 貨幣樣式

各Collection陣列個別特性列表


from http://www.dotblogs.com.tw/jeff-yeh/archive/2009/12/07/12322.aspx



  寫程式時,常會用到一些陣列來儲存資料,但什麼時候要用什麼樣的陣列,好像很少去想過這個問題,大多就直接的拿來就用,這裡整理了一下幾個陣列的特性及使用時機.

一般常用的幾個陣列如下 :

首先,先分幾個大方向,再來判斷說,你需要做到的功能,那幾個Collection可以做到,效能也較好.

需要做排序 :

ArrayList:繫結唯讀的排序資料到DataGrid上,如果只是要使用ArrayList的Indexes去繫結唯讀的資料,用ArrayList會比使用SortedList好,舉例來說,這資料要用來顯示在唯讀的DataGrid上,這資料已經檢索並排序好在ArrayList供顯示.
NameValueCollection:用在字串排序上.
SortedList:會在建立Collection時,就先排序好資料,所以在建立時是很耗效能在排序清單上,但是如果有少量資料異動或新增時,它會自己排序,其效能就會很好, SortedList適用在大部份是靜態也很少被異動的情況,也就是被排序的資料很少異動.
 

需要做搜尋 :

Hashtable:找尋隨機而具有Key/Value的資料.
StringDictionary:找尋隨機的字串資料.
ListDictionary:用在Size小於10的資料.
 

需要依Index去讀取每個Element的值 :

ArrayListStringCollection:可以用Index去取值.
Hashtable,SortedList,ListDictionary,StringDictionary:可以用Key的名字去取值.
NameValueCollection:可以用Index或是Key的名字去取值.

接下來再介紹這幾個陣列的特性.

ArrayList :

  可以動態依資料的新增,而去增加他的容量的大小,以下是它的幾個使用建議.
。儲存自定物件型別及資料變更頻繁,需要頻繁的插入及刪除.
。當資料異動完,使用TrimToSize去將ArrayList的容量調整到與實際資料一樣的大小,並對記憶體配置做調整,必需注意一點,在TrimToSize之後,盡量避免再去新增資料,因為ArrayList容量必需再動態變大,而Trim過後記憶體配置可能沒有空間拓大,記憶體會再重新配置,所以效能會比較差.
。儲存排序過後的資料與使用ArrayList.BinarySearch進行有效率的搜尋,排序與循序搜尋是使用耗資源的Contains方式.它是適用在一次性排序資料,如果需要頻繁的排序,那麼SortedList會比較有效率多了,因為當資料有異動時,它會自動重新排序.
。避免使用ArrayList去儲存String,String最好還是用StringCollection比較好.

Hashtable :

  使用一對Key/Value的方式來儲存資料,配置方式是依照雜湊值.
。適用在儲存大量的記錄及異動量低的資料,頻繁的異動資料,會因為重新計算雜湊值去跟其它資料進行比對的額外成本.
。Hashtable適用在頻繁的查詢資料,例如人員資料,UserNo就是Key,可以用這個Key去快速的找出Value.

HybridDictionary :

  汽車有油電混合系統,Collection也有混合版的,HybridDictionary當資料量小的時候,它可以像是ListDictionary的使用,如果量大,可以像Hashtable一樣新增容量.
。排序的資料,大部份的時間都不多,只有偶爾新增容量,如果確定資料很多或很少,就建議使用Hashtable與ListDicrionary.避免HybirdDictionary頻繁的在這兩種集合切換而造成的額外成本.
。適合頻繁的查詢資料.
。不要使用HybridDictionary來排序資料,它在排序的效能不好.

ListDictionary :

  建議使用在儲存少量的資料(少於10筆),因為它是使用單向連結串列來實作 IDictionary.在少於10筆的情況下,它會比Hashtable更小更快,如果大於10筆,就不應該使用ListDictionary.

NameValueCollection :

  使用String的Key與Value,所以可以用Key或者是Index來取值.
。可以排序Key/Value,而且Key值可以重覆.
。適用頻繁的異動資料.
。適合儲存需快速取出的資料.

Queue :

  先進先出FIFO的物件集合.
。適用依接收順序,循序讀取資料.
。因為FIFO的關係,所以在加入時,要注意順序.
。如果需要用String去讀取資料,最好是使用NameValueCollection.

SortedList :

  SortedList使用一對Key/Value的方式來儲存資料,所以可以依其索引及Key值進行存取,索引的順序是根據排序的順序,所以加入時,會依其排序加入到SortedList內,而Index也會相對應調整,所以當有資料異動時,它會較耗資源.
。適用在大部份是很少變動的資料.
。適用於使用Key或Index去快速取得排序後的資料.
。避免使用SortedList在大量異動的資料,其效能成本會很高,這情況之下,反而建議使用ArrayList.
。避免使用SortedList去排序String,這也會有額外的成本產生,建議使用StringCollection.
。因為排序的關係,通常在SortedList上進行的速度比Hashtable慢.

Stack :

  Stack跟Queue剛好相反,Stack是後進先出LIFO的方式.
。適合儲存LIFO的資料,例如:最近10個登入的人員.
。如果知道預計容量,在初始化時,最好就定義好大小,預設是10.
。適用在運作時,可以拋棄Item的情況.
。Stack適用在不需任意從陣列中讀取某一筆,只需LIFO的讀取.

StringCollection :

  StringCollection是Strongly typed的ArrayList,用來儲存String的陣列.
。用來儲存異動頻繁且大量的String資料.
。使用StringCollection去Binding String資料到DataGrid,可以避免在讀取時轉換為String的成本.
。不要使用StringCollection去排序字串或儲存預先排序好的資料.

StringDictionary :

  跟Hashtable一樣,Index與Value是強型別的String,而不是使用Object.
。適用在資料不需頻繁的異動,因為底層架構是Hashtable,使用來排序強型別的字串.
。用在儲存靜態的資料,頻繁搜尋的資料.
。如果是要儲存String,永遠記得使用StringDictionary比Hashtable好.

簡表 :

Type
描述
ArrayList
動態變動陣列的容量,當你在設計階段不知道它可能的容量時,ArrayList就很好用.
Hashtable
使用一對Key/Value的方式來儲存資料,配置方式是依照雜湊值.適用在搜尋上,而不適用在排序.
HybridDictionary
當資料量小的時候,它會使用ListDictionary,資料量大的時候,它會切換為Hashtable.
ListDictionary
在儲存10筆以下的Key/Value很好用.
NameValueCollection
String的Key/Value可以用來排序,可用Key或Index來存取資料.
Queue
先進先出FIFO的陣列.
SortedList
Key/Value的陣列,依Key排序及用Key或Index來存取資料.
Stack
後進先出LIFO的陣列.
StringCollection
強型別的String陣列
StringDictionary
跟Hashtable一樣,Index與Value是強型別的String,而不是使用Object.


  在.Net 1.1之後,在Collection有陸續的一些改善,之前有提到,Collection有泛型的Boxing/Unboxing問題,所以在.Net 2.0開始,就推出了一些改善過的Collection出來,在.Net 1.1所使用的namespace是System.Collections,新的是不同的namespace System.Collections.Generic.
 
Type
對應 無泛型 Type
描述
Hashtable
*加入的項目都是由值與關聯索引組成,用索引鍵讀取的效率高[接近O(1)],實作是雜湊資料表.
*Key不能Null,Value可以為Null
 
* HashSet只有一個值,這個集合沒有特定順序,也不可重覆,容量會自動增加.
*如果Count小於內部陣列容量,採O (1)計算,如果必需要調整HashSet大小,則是採O (n)
*Comparer/Contains的效能很好,是O (1)運算
 
*插入/移除/Count都是O (1)運算,所以效能很好.
*唯一支援多執行緒的讀取.
*資料可重覆.
*因為是雙向連結串列,因此每個節點都向前指向Next,向後指向Previous
*接受Null
ArrayList
*這兩個型別的行為相同,最主要的差別在泛型.
*在大多數的情況下,List<T>的效能較ArrayList好,且型別安全.
*執行BinarySearch前,要先排序.
*接受Null
Queue
*這兩個型別的行為相同,最主要的差別在泛型.
*在大多數的情況下, Queue <T>的效能較Queue好,且型別安全.
 
* SortedDictionary<TKey, TValue>用的記憶體比SortedList<TKey,TValue>多.
* SortedDictionary<TKey, TValue>對未排序資料做新增移除比SortedList<TKey,TValue>快.
* SortedDictionary<TKey, TValue>從排序的資料做一次性新增比
SortedList<TKey,TValue>慢.
SortedList
Stack
*這兩個型別的行為相同,最主要的差別在泛型.
*在大多數的情況下, Queue <T>的效能較Queue好,且型別安全.
 其它參考 :

進階版 工作管理員 Process Explorer 免安裝


進階 工作管理員

可以顯示目前程序 的詳細資訊

監控 是否有沒有惡意軟體


下載點 http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx


其他 http://technet.microsoft.com/zh-tw/sysinternals/bb896645.aspx

反組譯程式 Reflector


反組譯程式 Reflector

from  http://www.dotblogs.com.tw/jeff-yeh/archive/2008/08/04/4770.aspx


支援的語言有IL,C#,VB,Delphi,MC++,Chrome,各版的.Net Framework也支援


可以看到這個類別被那些程式引用到,或是直接點取右邊視窗的類別,就會自動跳到該類別去


下載點 http://www.reflector.net/

Windows 惡意軟體移除工具


Windows 惡意軟體移除工具
平常更新 都會看到

原來這玩意要這樣用.......

XP
在開始 -> 執行 ->輸入MRT 按下enter


WIN7
在開始 -> 直接輸入MRT 按下enter

MRT很好記 也很方便吧

2013年3月23日 星期六

24句經典搞笑語錄


1、一早醒來我以為我長大了,原來是被子蓋橫了。
2、你把別人想得太複雜,是因為你也不簡單。
3、活著的時候開心點,因為我們要死很久。
4、人生沒有綵排,每天都是現場直播!
5、愛情是藝術,結婚是技術,離婚是算術。

6、曾經擁有的,不要忘記;已經得到的,更要珍惜;屬於自己的,不要放棄;已經失去的,留著回憶;想要得到的,必須努力;但最重要的,是好好愛惜自己!
7、我們是怎樣的一代人:
當我們讀小學的時候,讀大學不要錢;
當我們讀大學的時候,讀小學不要錢;
我們還沒能力工作的時候,工作是分配的;
我們可以工作的時候,撞得頭破血流才勉強找份餓不死人的工作;
當我們不能掙錢的時候,房子是分配的,當我們能掙錢的時候,發現一輩子的薪水也買不起房子;
當我們沒有進入股市的時候,傻子都在賺錢;當我們興沖沖闖進去的時候,才發現自己成了傻子。
哎,這樣的痛苦我都趕上了。
8、豬有豬的思想,人有人的思想。如果豬有人的思想,那它就不是豬了—是八戒!
9、哭,並不代表我屈服;退一步,並不像徵我認輸;放手,並不表示我放棄;微笑,並不意味我快樂!
10、小時候我以為自己長大後可以拯救整個世界,等長大後才發現整個世界都拯救不了我…… 

11、生前何必久睡,死後自會長眠……  
12、如果你看到面前的陰影,別怕,那是因為你的背後有陽光!
13、人不可能把錢帶進棺材,但錢可能把人帶進棺材。
14、能夠說出的委屈,便不算委屈;能夠搶走的愛人,便不算愛人。
15、在對的時間,遇到對的人,那是一種幸福。在錯的時間,遇到錯的人,那是一聲歎息。

16、做錯了~~改正一下,傷心了~~痛哭一下,厭倦了~~回望一下,活累了~~休息一下,絕望了~~無奈一下。
17、在愛情沒開始以前,你永遠想像不出會那樣地愛一個人;在愛情沒結束以前,你永遠想像不出那樣的愛也會消失;在愛情被忘卻以前,你永遠想像不出那樣刻骨銘心的愛也會只留淡淡痕跡;在愛情重新開始以前,你永遠想像不出還能再一次找到那樣的愛情。
18、歲月會讓我們學會理解,年輪會讓我們學會寬容!
19、現代人的生活狀態:上今天的班,睡昨天的覺,花明天的錢。
20、摔跤以後千萬不要多想,先爬起來再說。

21、試金可以用火,試女人可以用金,試男人可以用女人。——往往都經不起那麼一試。
22、樹不要皮,必死無疑!人不要臉,天下無敵!
23、放得下的是曾經,放不下的是記憶。
24、世界上最二的一句英文,莫過於「從1:582:02請大聲朗讀:two to two to two two

2013年3月22日 星期五

C# 依照字串長度 改變TextBox長度


from http://turtlemt.pixnet.net/blog/post/273105***


System.Text.Encoding.Default.GetBytes(a).Lengt

判斷字串的精準長度 全形+2 半形+1

TextBox 會跟著內容 更變長度
        private void textBox_KeyDown(object sender, KeyEventArgs e)
        {
            int iLength = System.Text.Encoding.Default.GetBytes(Text).Length;
            this.Width = (iLength < 1 ? 20 : iLength * 6 + 20);
}

2013年3月9日 星期六

說到當兵,就讓人聯想到鬼故事...


from http://forum.u-car.com.tw/thread.asp?forumid=167370



說到當兵,就讓人聯想到鬼故事,
剛好小弟是在外島退役(馬祖南竿),
還記得那度日如年的日子,腦中只有單純的兩個願望,
第一是趕快退伍回家,
第二是用65K2在後勤官的腦袋上轟一個洞;
不知不覺一晃眼一年過去,在我以為將平靜的結束我的軍旅生涯,
卻發生了這麼一段靈異故事。
時間是某一個下哨的深夜一點多,
由於還沒洗澡,所以我決定去大澡堂清洗一下再就寢;
大澡堂是開放式的,一去發現一個學弟正好洗到一半,
學弟很有精神:『學長好!』
學弟看到學長一定要有禮貌,
而學長看到學弟一定要先嗆一下,
例如:『幹!一進來就聞到滿屋的菜味!』
或是:『菜比巴,一梯退三步沒聽過是不是?』
但是因為本人走溫和路線,而且那學弟比我壯我打不過他,
所以單純的打個招呼就開始盥洗了。
半夜兩個大男人坦承相見一起洗澡在軍中也習慣了,
但是還是忍不住會偷瞄一下對方大小,
哼! 普通貨色,瞄來瞄去忽然我發現, 浴室的角落有個不尋常的東西,
沒錯,就是阿飄。
它是一個人的外型,很老套的長髮蓋臉,全身白衣略顯透明,
坐在浴室角落靜靜的,垂著頭一動也不動......
學弟似乎看不到,依然悠哉的繼續洗澡,
人家說:老兵八字輕,我可是看的一清二楚,
我害怕那東西會忽然沖過來或是幹麻的,
太過緊張的洗澡害我肥皂一直滑掉,
學弟見狀後忽然開口:『學長,你一直撿肥皂,是不是在暗示我什麼?』
我大驚,莫非學弟也發現了?
我:『嗯....學弟,你發現了? 』
學弟面有難色:『學長,我不是你想像的那樣,我沒有這樣過...』
不是我想像的這樣,看來他應該沒有撞鬼的經驗,
我:『學弟,你是第一次嗎?』
學弟:『不是,學長你不要這樣,我會害怕...』
可能是因為學弟不是老兵,所以八字不夠輕看不到它,
我想到曾經在書上看過幫人家通天眼的教學,
聽說開通後就可以看得到了,
我:『學弟,想見識一下嗎?讓我幫你通一下眼,我會很快的....』
學弟遮著屁股:『不,不,學長你不要這樣,我會叫的...』
看來學弟很怕看到鬼的樣子,我安撫他
我:『學弟不要緊張,第一次可能會害怕,有過幾次經驗你就會習慣了...』
學弟:『學長不要這樣,我不知道學長是這樣的人....』
當然,很多人都不知道我有點靈異體質,有時候會看得到,
我:『喔喔,像我們這種人都要比較低調,你也知道軍中很多那個,
被發現很容易被它們纏上....』
學弟:『嗯....也對,聽說軍中真的很多.....』
我:『偷偷告訴你,家豪班長也是這種人喔!』
學弟:『!! 什麼?! 家豪班長也是?!』
我:『對呀!我們常常私底下會互相討論交流呢!』
學弟:『討論這種經驗?』
看來學弟不知道有鬼壓床和鬼上身這種東西,
我:『就被壓還有被上的經驗呀....』
學弟:『聽起來很噁心耶....』
我:『不會噁心阿,其實被上久了就習慣了,
家豪班長還有教我怎麼減輕被壓時的痛苦喔!
他說狂罵髒話就可以了。』
學弟:『什麼?在那個的時候狂罵髒話,不是很奇怪?』
我:『對呀,我也覺得很奇怪,所以我還是喜歡用我自己的方法來應付。』
學弟:『什麼方法?』

我:『念大悲咒呀。』
學弟:『..........................你更怪。』
我:『哪會怪,而且有的時候遇到厲害一點的,還得要拿道具輔助才可以解決。』
學弟:『你們還玩道具阿....』
其實因為我和家豪班長想學些降妖服魔的東西,所以我們有買些法器研究。
我:『說來好笑,我們還有替自己的那一根東西取名字,
家豪班長的那根細細長長的,我們取名叫做伏魔劍,
而我的那根就粗粗壯壯,所以叫做降龍棒。』
學弟:『你們還替自己的那根取名字喔.....很奇怪耶....』
我:『那會奇怪阿,我們還會互相交換把玩一下...』
學弟:『!! 還互相把玩....』
我:『對呀,有一次我玩的太HIGH了,不小心把家豪班長的那一根給弄斷了。』
學弟:『挖靠!! 那不就要趕快送醫院!』
我:『幹麻送醫院? 拿個膠帶纏一纏黏回去就好了。』
學弟:『什麼!! 用膠帶黏回去就好了?!』
我:『對呀,只不過變得有點歪歪的而已,
老實說我的這一根也歪歪的。』
學弟嘀咕著:『大家的不都馬是一樣,學長的那根當然也....』
就在此時,角落的飄很猛然的站了起來,
我緊張的大喊:『阿阿阿阿,你看它站起來了!!
剛剛還垂頭喪氣的,現在很有精神的站起來了!』
學弟卻撇開頭閉著眼睛說:『學長你不要這樣,我不想看那個站起來的樣子....』

那個阿飄眼神充滿血絲,兇狠的盯著學弟看,
我:『學弟快看阿,他充血著注視著你阿阿阿阿阿....』

學弟低著頭:『對不起學長,我真的沒有辦法接受這個.....』
學弟話還沒說完,那個猛飄忽然撲向學弟要上學弟的身,
基於學長保護學弟的心態,我怎麼可以讓沒有經驗的學弟被鬼上身呢?
顧不得全身的赤裸我朝學弟撲過去並對著阿飄大喊:

『要上就上我吧~~~~~!!!!! 』
學弟見狀嚇的奪門而出,連東西都忘了拿,
而隨著學弟逃去,那個猛飄也慢慢的消失不見了,
總算結束了我這次大澡堂的撞鬼經驗。
我想那個學弟應該會很感謝我那時保護他的行為,
只不過不知道為什麼在那之後他總是離我很遠,
而且也不怎麼敢跟我說話的感覺.......(完)

介系詞: 從, 由, 自, 離, 從中, 阻止, 走, 打

2013年3月7日 星期四

內嵌廣告的剋星-Adblock Plus

內嵌廣告的剋星-Adblock Plus
阻擋一些Android 應用程式app的廣告
 

MangoHost Copyright © 2009 Cookiez is Designed by Ipietoon for Free Blogger Template