sp.net atlas中引入了客戶端控件的概念,用面向對象思想將客戶端javascript將要操作的dom元素封裝起來,帶來了更清晰的代碼模型以及更好的可復用性(不足之處是效率有所降低)。atlas的客戶端控件是連接javascript與dom元素的橋梁,我們應該盡可能的使用客戶端控件與dom元素打交道,也就是以atlas的方法來編寫我們的程序。同時,atlas對javascript面向對象方面的強大擴展(請參考:asp.net atlas對javascript的擴展),也讓我們很容易通過繼承,覆寫等方法來構建自定義的控件。
在前面的一些帖子中,我介紹了一些atlas中較復雜的控件。但同時,atlas也提供了一些比較簡單/基礎的客戶端控件,同樣在開發中十分有用,讓我們通過這個系列來熟悉atlas自帶的簡單客戶端控件。
所有的atlas客戶端控件都繼承于sys.ui.control基類,同時sys.ui.control繼承于sys.component基類,讓我們先看看sys.component提供的屬性:
1. id:atlas組件的標識符,將atlas客戶端組件與dom元素連接起來。這個id值與dom元素的id屬性值相同,atlas使用這個id以找到相關的dom元素。
2. bindings:該組件的綁定集合。關于atlas中的綁定,請參考:atlas揭秘 —— 綁定(binding)。
3. datacontext:該組件的綁定的操作對象。如果您設置了這個屬性,那么所有綁定條目默認會繼承這個對象,但您也可以在綁定的聲明中覆蓋這個默認的設定。
4. isinitialized:布爾值,代表該組件是否被初始化過。只讀。
5. isupdating:該組件是否正在更新中,在開始調用beginupdate()方法到調用endupdate()方法期間為true,其他時間為false。只讀。
sys.component還提供如下的方法:
1. beginupdate與endupdate:依賴于基類的實現,可以通過調用這兩個方法延遲或一起更新一批組件,以提高性能或減少屏幕閃爍。
2. initialize:構造函數,不必多言,繼承類可以擴展該方法并初始化自己的成員。
還有如下事件:
1. propertychanged:當組件的某個屬性變化時,應該引發該事件。atlas綁定的實現依賴于這個事件。
現在讓我們看看sys.ui.control提供的屬性:
1. accesskey:獲取或設置控件的accesskey,該屬性是dom元素中的accesskey屬性的包裝。
2. associatedelement:返回控件的相關dom元素。這個屬性應該傳入給控件的構造函數,并在構造以后不可以修改。
3. behaviors:該組件的behavior集合。關于atlas中的behavior,請參考:在asp.net atlas中創建自定義的behavior。
4. cssclass:獲取或設置控件的css class,該屬性是dom元素中的class屬性的包裝。
5. enabled:代表該控件是否被啟用,該屬性是dom元素中的enabled屬性的包裝。
6. parent:獲取或設置該控件的父控件。
7. style:獲取該控件相對應的dom元素的style屬性值。
8. tabindex:獲取或設置該控件的tab index。
9. visibilitymode:獲取或設置該控件在隱藏時的顯示模式,可選枚舉值:sys.ui.visibilitymode.collapse代表該控件隱藏時不占用頁面空間,sys.ui.visibilitymode.hidden代表該控件隱藏時依然占有其位置。
10. visible:獲取或設置該控件是否可見。
sys.ui.control同樣提供如下方法:
1. addcssclass:為該控件添加一個css class。
2. removecssclass:刪除該控件的一個css class。
3. containscssclass:返回布爾值,代表該控件是否有指定的css class。
4. togglecssclass:如果該控件沒有指定的css class,則添加,如果有,則刪除。
5. focus:使該控件獲得輸入焦點。
6. scrollintoview:使該控件滾動到屏幕可視范圍內。
7. onbubbleevent:處理該控件的子控件發出的bubble事件。您可以在這篇文章:使用 asp.net atlas pagenavigator控件實現客戶端分頁導航中找到該方法的實際應用。
8. raisebubbleevent:該方法會調用該控件所有父控件的onbubbleevent方法,來實現bubble事件。您可以在這篇文章:使用 asp.net atlas pagenavigator控件實現客戶端分頁導航中找到該方法的實際應用。
atlas
中的客戶端控件均繼承或間接繼承于sys.ui.control基類(請參考:asp.net atlas簡單控件介紹——sys.component基類與sys.ui.control基類),并有所擴展,本文將介紹atlas內建的簡單控件inputcontrol,textbox,button和checkbox。
sys.ui.inputcontrol
inputcontrol類是一個抽象類,作為所有提供用戶輸入的控件(例如textbox,見下文)的基類,提供了輸入數據驗證等公有操作。inputcontrol抽象類提供如下屬性:
1. isvalid:該屬性為只讀,返回布爾值,代表輸入數據經過驗證后是否合法,即是否通過了所有validator(請參考:在asp.net atlas中創建自定義的validator)的驗證。
2. validationmessage:該屬性為只讀,返回string。當驗證失敗時,它包含第一個引發失敗的validator的錯誤信息;若驗證成功,則為空字符串。
3. validators:返回該inputcontrol的validator集合,您可以通過這個屬性添加/刪除某個validator來實現對用戶輸入信息的驗證。
sys.ui.textbox
textbox控件是任何一種gui都必須提供的控件之一,也是我們最常用的和用戶交互的控件之一。atlas中的textbox封裝了type為input的dom元素input,或是dom元素textarea,繼承于inputcontrol基類以獲得輸入數據驗證的功能。textbox提供如下屬性。
1. text:獲取或設置textbox中的文字。
正因為textbox在實際程序設計中非常常用,所以我們也經常需要對它的擴展。關于對textbox空間的擴展,有興趣的朋友請參考:
1. 使用asp.net atlas開發in place editing輸入控件
2. 使用asp.net atlas開發隨輸入內容自動調整行數的textarea
sys.ui.button
button控件在gui中同樣重要。atlas將dom元素中的button概念擴展,使button不單單指type為button或submit的html input元素,還可以應用到例如span,a等元素上,提供開發人員統一的編程接口。button提供如下兩個屬性:
1. command:獲取或設置代表該button引發的命令名稱的string。當該button的父控件允許event bubbling時,父控件的onbubbleevent事件處理函數中可以訪問到該屬性以得到該button傳遞過來的命令名稱。
2. argument:獲取或設置代表該button引發的命令參數的string。該button的父控件允許event bubbling時,父控件的onbubbleevent事件處理函數中可以訪問到該屬性以得到該button傳遞過來的參數。
以上兩個屬性在某些情況中非常有用,您可以在這篇文章:使用 asp.net atlas pagenavigator控件實現客戶端分頁導航中看到它們的實際應用。
button還提供如下的事件:
1. click:在該button被點擊時觸發。
注意:當某個button被點擊時,首先觸發的是該button的click事件,然后再觸發該button父控件的onbubbleevent事件。
sys.ui.checkbox
atlas中的checkbox封裝了type為checkbox的input dom元素。用戶可以使用它輸入一個布爾值。checkbox提供如下屬性:
1. checked:獲取或設置代表該checkbox是否被選中的布爾值。
checkbox還提供如下事件:
1. click:在該checkbox被點擊時觸發。
atlas中的客戶端控件均繼承或間接繼承于sys.ui.control基類(請參考:asp.net atlas簡單控件介紹——sys.component基類與sys.ui.control基類),并有所擴展,在上一篇文章(asp.net atlas簡單控件介紹——inputcontrol,textbox,button和checkbox)中,我介紹了inputcontrol,textbox,button和checkbox控件。本文將繼續介紹atlas內建的剩下四種簡單控件:label,hyperlink,select和image。
sys.ui.label
atlas中的label控件可以用來顯示一段文字,同時也可以作為一段html的占位符。label控件有如下屬性:
1. text:獲取或設定label中的內容。該內容既可以以文本方式顯示或是以html方式顯示,取決于htmlencode屬性的設定。
2. htmlencode:獲取或設定一個布爾值。代表label中的內容是否以純文本方式顯示,默認值為false。
sys.ui.hyperlink
hyperlink控件繼承于sys.ui.label,用來封裝html中的a元素。hyperlink除了擁有label的所有屬性以外,還提供如下屬性:
1. navigateurl:獲取或設置hyperlink中的導航url,是對a元素的href屬性的包裝。
如下事件:
1. click:在該hyperlink被點擊時觸發。
sys.ui.select
select控件封裝了dom元素select,可用來表示一個drop down list。select控件有如下屬性:
1. firstitemtext:獲取或設定list中的第一項的文本。可以被設置成諸如“請選擇……”等文本來提示用戶輸入。默認值為空,即不顯示提示輸入的文字。
2. selectedvalue:獲取或設定該list中被選中的條目的值。
3. data:獲取或設置一個datatable(關于atlas客戶端datatable對象,請參考:atlas命名空間sys.data下控件介紹——datacolumn,datarow和datatable),代表該select中的數據。
4. textproperty:獲取或設置一個string,代表data屬性中的datatable里,將作為該select中條目中的文本顯示的字段的名稱。
5. valueproperty:獲取或設置一個string,代表data屬性中的datatable里,將作為該select中條目中的值的字段的名稱。
如下事件:
1. selectionchanged:在該select中被選中的條目變化時被引發。
sys.ui.image
image控件作為對dom元素img的封裝,提供如下屬性:
1. imageurl:獲取或設置一個代表圖片路徑的字符串,是對img元素的src屬性的封裝。
2. alternatetext:獲取或設置一個代表圖片文字說明的字符串,是對img元素的alt屬性的封裝。
3. width:獲取或設置圖片的寬度。
4. height:獲取或設置圖片的高度。
原文地址:http://dflying.cnblogs.com/archive/2006/05/07/introduct ... label_hyperlink_select_image.html
新聞熱點
疑難解答
圖片精選