ASP.NET 2.0 中的 DataSource 系列控件
在ASP.NET 2.0中,引入了DataSource系列控件,扔一個到頁面上并且選擇性的配置好SELECT/UPDATE/INSERT/DELETE對應的操作,它就能夠和數據空間無縫合作自動處理查詢與更新,并且提供分頁、排序等支持。
有一些ASP.NET 1.x的程序員,并不喜歡使用DataSource控件,覺得還是按找1.x的寫法在Page_Load里面設定數據控件的DataSource屬性然后執行DataBind好,但實際上2.0的數據控件為DataSource控件做了不少優化所以應該盡量使用DataSource控件。我在使用2.0的過程中DataSource控件和手動DataBind都嘗試過了,并且借助Reflector分析.NET自帶控件的代碼,發現了其中的一些差異。
首先要說的是,數據控件對于是否使用DataSource控件是非常敏感的,很多操作數據控件都會檢查自己的DataSourceID屬性是否為空,如果不為空則很多事情都能夠配合DataSource控件自動化完成,如果為空則通過事件通知用戶需要手動完成一些操作。
例如GridView的分頁,在使用DataSource控件的時候是能夠自動運作的,在翻頁時GridView會自動將PageIndex設置為GridViewPageEventArgs.NewPageIndex,同時設置RequiresDataBinding為true,接下來的事情就如魔術般自動發生——GridView會重新執行DataBind,這時候它會懂得自己去找DataSource控件獲取DataSourceView,然后從DataSourceView中獲取本頁數據并進入創建子控件環節。如果你提供給DataSource控件的SELECT方法本身就支持通過傳遞參數選擇僅獲取某一頁的數據,那么DataSource控件就懂得僅獲取GridView所需頁的數據以及總頁數。
但如果沒有DataSource控件,只是指定DataSource并且DataBind,那就會提示GridView未設置OnPageIndexChanging事件,其實意思就是你必須自己手動處理這個事件。對于DataSource從來都是整個GridView顯示的數據這種情況來說,自己添加一個OnPageIndexChanging事件并在其中手動更改PageIndex屬性和重新DataBind就可以解決問題了。但如果你想優化SELECT方法為僅獲取當前頁的數據,那就沒辦法了,因為你無法手動設置GridView的PageCount屬性。
轉載于:https://www.cnblogs.com/cathsfz/archive/2006/10/22/536463.html
總結
以上是生活随笔為你收集整理的ASP.NET 2.0 中的 DataSource 系列控件的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: HTTP调试工具:Fiddler 介绍二
- 下一篇: 又得古语
