使用Calendar控件顯示HiredDate字段
在GridView中將數(shù)據(jù)顯示為文本的話,只需要簡單的使用BoundField就可以了。然而,在某些特定的場合,數(shù)據(jù)***是展示為一個特殊的Web控件而不是一個簡單的文本。這樣的自定義的數(shù)據(jù)顯示就可以用TemplateField來做。比如說,比起將雇員的雇傭日期顯示成文本來說,我們覺得將其高亮的顯示在一個Calendar(使用Calendar控件)中會更爽一些。
要做到這一點,先將HiredDate這個綁定列轉(zhuǎn)換成一個模板列。像之前做的那樣轉(zhuǎn)換就是了,大家應(yīng)該還沒有忘記吧?在GridView的智能標(biāo)簽?zāi)抢锵率志涂梢粤恕?/P>
Calendar控件:將HiredDate綁定列轉(zhuǎn)換成一個模板列
就像我們在第二步中看到的那樣,這個操作會將綁定列替換成一個含有ItemTemplate和EditItemTemplate的模板列,其中的ItemTemplate和EditItemTemplate分別帶有一個Label和一個TextBox,而這個Label和TextBox的Text屬性都使用了數(shù)據(jù)綁定語句< %# Bind("HiredDate")%>來將HireDate綁定到自己身上。
要用Calendar控件來替換這個文本的話,我們可以編輯模板:刪除Label控件,并添加上一個Calendar控件。在設(shè)計器中,從GridView的智能標(biāo)簽的彈出菜單中選擇“編輯模板”(Edit Templates),并在下拉列表中選擇HireDate模板列的ItemTemplate。然后,刪除Label控件并從工具箱中拖一個Calendar控件到模板編輯界面中。
Calendar控件:給HireDate模板列的ItemTemplate添加一個Calendar控件
這個時候,GridView中每一行的HireDate模板列都會包含一個Calendar控件。不過,雇員的實際雇傭日期還沒有設(shè)置到Calendar控件上,這就讓Calendar控件默認(rèn)的顯示為當(dāng)前的日期。我們可以通過將雇員的HireDate賦值給Calendar控件的SelectedDate和VisibleDate屬性來修正這個問題。
從Calendar控件的智能標(biāo)簽中選擇“編輯數(shù)據(jù)綁定”。然后,把SelectedDate和VisibleDate這兩個屬性都綁定到HireDate字段上。
Calendar控件:將SelectedDate和VisibleDate都綁定到HireDate字段上
注意:Calendar控件的選定日期不一定要可見。舉個例子來說,某個Calendar控件的選定日期為1999年4月1日,但卻顯示的是現(xiàn)在的年月。選定日期和可見日期是由Calendar控件的SelectedDate和VisibleDate屬性來指定的。因為我們不僅希望選中雇員的HireDate,還希望它是可見的,那么我們就需要將這兩個屬性都綁定到HireDate字段上。
現(xiàn)在,我們再到瀏覽器中看看這個頁面,Calendar現(xiàn)在顯示的是雇員的雇員受雇日期的月份并選中了一個指定的日期。
Calendar控件:雇員的受雇日期顯示到了Calendar控件上
注意: 和我們一直所見到的那些例子相反,在本節(jié)教程中我們并沒有將GridView的EnableViewState屬性設(shè)置為false。這樣做的原因是,在Calendar控件上的點擊將會產(chǎn)生一個回發(fā)(PostBack),并將Calendar的選定日期設(shè)置為剛才所點擊的那個日期。如果禁用了GridView的ViewState,那么每一次回發(fā)都將導(dǎo)致GridView使用原來的數(shù)據(jù)重新綁定,這樣Calendar的選定日期就會變成原來的雇員受雇日期。
在本教程中,這是一個沒有意義的議題,因為用戶本來就不應(yīng)該可以修改雇員的受雇日期??赡苤苯优渲肅alendar控件為不可選是***的辦法。不過不管怎么說,在本教程中可以看到,某些情況下還是將控件的ViewState啟用才能提供某些特定的功能的。
【編輯推薦】