大大毛 的筆記

            DDM's Note

          哪怕沒有辦法一定有說法,
          就算沒有鴿子一定有烏鴉,
          固執無罪 夢想有價,
          讓他們驚訝.

          posts - 14, comments - 23, trackbacks - 0, articles - 58
             :: 首頁 ::  :: 聯系 ::  :: 管理

          數據控件

          Posted on 2006-08-23 18:52 大大毛 閱讀(582) 評論(0)  編輯  收藏 所屬分類: ASP.NET

          ???Repeater控件,共有五個模板,編輯該控件的模板只能在ASP源碼中進行
          ??????1.ItemTemplate,正常顯示項,如果定義了交替項模板,則僅代表奇數Item(從1開始算)
          ??????2.AlternatingItemTemplate,交替項,代表偶數Item
          ??????3.HeaderTemplate,頁眉,在控件的最前
          ??????4.FooterTemplate,頁腳,在控件的最后
          ??????5.SeparatorTemplate,分隔項,位于各Item之間,如使用<br/>實現各項換行
          ???適用于:
          ??????替代只讀顯示容器內容的循環,如將一個ResultSet顯示成一張表。
          ??????HeaderTemplate中使用<table><tr>,ItemTemplate/AlternatingItemTemplate中使用<td></td>,SeparatorTemplate中使用</tr><tr>,FooterTemplate中使用</tr></table>可以實現一個 <table> 元素效果。

          ???DataList控件,共有七個模板
          ??????6.SelectedItemTemplate,選擇項
          ??????7.EditItemTemplate,編輯項
          ???適用于:
          ??????可編輯數據的顯示,因此在普通的DataSource指定后2006年8月24日,需要綁定數據源的主鍵列(指定控件的DataKeyField屬性)。
          ??????該控件提供了多種事件,由放在Item中的Button控件激發。
          ??????Button控件將會激發ItemCommand事件,可通過傳入的事件參數來引發其它事件,例如使用SelectedItem模板:

          ???? protected ? void ?DataList1_ItemCommand( object ?source,?DataListCommandEventArgs?e)?{
          ????????
          if ?(e.CommandName? == ? " Select " )?{????????????????????????? // 判斷激發事件的Button.CommandName

          ???????????? this .DataList1.SelectedIndex? = ?e.Item.ItemIndex;?? // 讓激發事件的行被選中
          ????????????myDataBind();??????????????????????????????????????????????? // 這里需要進行重新綁定
          ????????}
          ????}

          ??????使用EditItemTemplate模板,將Button.CommandName指定成"edit"即可。

          ???? protected ? void ?DataList1_EditCommand( object ?source,?DataListCommandEventArgs?e)?{
          ????????
          this .DataList1.SelectedIndex? = ? - 1 ;?????????????????????? // 放棄選擇

          ???????? this .DataList1.EditItemIndex? = ?e.Item.ItemIndex;???? // 讓當前行進入編輯狀態
          ????????myDataBind();
          ????}

          ??????在EditItemTemplate模板中可以將允許修改的列綁定到子控件上,并放入兩個Button,CommandName分別指定為"update","cancel"與DataList的事件相對應,再在對應的數據更新/放棄事件中編程即可。

          Cancel事件

          Update事件

          ??????將Button控件的CommandName指定為"delete",可激發數據刪除事件:
          Delete事件

          ??????通常需要在Update/Delete按鈕上加入確認,如果是靜態提示可以直接在Button的屬性中加入:

          < asp:Button?ID = " btnDelete " ?runat = " server " ?CommandName = " delete " ?Text = " 刪除 " ?OnClientClick = " return?confirm( 'delete?' ); " ? />
          ??????在這里可以看到,是利用了Button控件的 OnClientClick 屬性調用本地的 JS函數 confirm() 來實現確認的功能。如果想提示動態消息(如提示一個ID),偶沒有試出來,不過可以寫在代碼段里,利用ItemCreated事件,這樣:
          ItemCreated事件

          ??????這樣一來就可以在Button激發DataList的事件之前進行簡單的確認了,不過需要注意的是:
          ?????????.用這種方式時,在運行時如果有錯誤是不會有什么提示消息的,而且流程直接向下進行;
          ?????????.如果同時使用了兩種,那么Button上的OnClientClick屬性優先。

          ??????該控件的顯示方式也與Repeater控件大不相同,它的顯示方式分為"表"和"流"兩種,默認使用表布局。
          ?????????使用表布局時控件會自動生成一個<table>元素,樣式則由各模板對應的<style>指定,在該控件的運用中不應該再使用如Repeater那種自構造<table>元素的方法,因為該控件中經常需要用到FindControls方法,自行加入元素會影響到該方法。
          ??????可以看到模板還具有自己所對應的Style,這個樣式與當前Item所使用的模塊對應,例如選中第1項,如果沒有配置<SelectedItemStyle>才會使用<ItemStyle>所定義的樣式。

          ???手工分頁:
          ??????如上面提到的Repeater、DataList控件都沒有提供分頁的功能,此時可以對數據源進行分頁再配合自定義的導航條來實現分頁效果。
          ??????手工分頁,需要用到 System.Web.UI.WebControls.PagedDataSource 對象。
          ??????例如:在頁面中加入lblPageNo控件以保存當前頁號(text="0"),btnPrevious表示上一頁,btnNext表示下一頁。

          新的代碼

          ???排序:
          ??????利用數據視圖DataView的Sort屬性來實現排序,將其屬性指定為一個字段名 + 排序規則。
          ??????在GridView中列上可以設置SortExpression排序表達式,并在Sorting事件中指定DataView的Sort為該事件的SortExpression即可。

          ???GridView:
          ??????就是一個數據表格,在以前的版本中叫DataGrid。它的功能比DataList更為強大,支持數據表格顯示、按列的控制(DataList按名字就只支持一列)、列的排序、分頁、空頁控制等多種功能,可以將DataList看做是一個輕量級的控件,不過從這兩種控件的屬性及使用方式來看,風格完全不同,這可能也是兩控件命名不一的原因吧。



          ?

          i am ddm

          主站蜘蛛池模板: 长春市| 镇沅| 安宁市| 阿克苏市| 图片| 大理市| 长治市| 呼伦贝尔市| 平谷区| 西安市| 太谷县| 普格县| 察雅县| 岗巴县| 湟中县| 平遥县| 库车县| 大同市| 集安市| 桐乡市| 成安县| 上杭县| 武义县| 车致| 九龙城区| 马尔康县| 礼泉县| 淮阳县| 长春市| 北碚区| 常州市| 宜君县| 松原市| 恩平市| 高碑店市| 来宾市| 黔东| 土默特左旗| 扎囊县| 崇文区| 库尔勒市|