ASP.NET 2.0 綁定高級技巧(轉載)

 
 出自:http://ghd258.cnblogs.com/archive/2005/11/17/278567.html

1.簡單數據綁定定

None.gif<!--ASP.NET 1.x data binding expression -->
ExpandedBlockStart.gif
<%# DataBinder.Eval(Container.DataItem, "Price"%>
None.gif
<!--Equivalent ASP.NET 2.0 data binding expression -->
ExpandedBlockStart.gif
<%Eval("Price"%>
None.gif
<!--XML data binding -->
ExpandedBlockStart.gif
<%# XPath("Price"%>
2.數據源控件
None.gif控件名                                     控件描述
None.gifSqlDataSource                       一切支持SQL語句的數據源控件
None.gifAccessDataSource               Access數據源控件
None.gifXmlDataSource                     XML數據源控件
None.gifObjectDataSource                自行編寫組件的數據源控件
None.gifSiteMapDataSource             頁面導航控件的數據源控件
 2.1 SqlDataSource關鍵屬性
None.gif名稱                                               描述
None.gifConnectionString                        連接數據庫的連接字符串
None.gifSelectCommand                           用於執行查詢的命令
None.gifInsertCommand                           用於執行插入的命令
None.gifUpdateCommand                        用於執行更新的命令
None.gifDeleteCommand                          用於執行刪除的命令
None.gifDataSourceMode                        指定數據源類型是DataSet 或DataReader( 默認值
= DataSet)
None.gifProviderName                              指定供應商(默認值
= SQL Server .NET provider)
 2.2 SqlDataSource 支持通過以下屬性進行數據緩存
None.gif屬性名                                         描述
None.gifEnableCaching                           指定是否打開緩存(默認值
= false)
None.gifCacheDuration                           指定結果被緩存多少秒
None.gifCacheExpirationPolicy              指定緩存間隔是sliding 還是absolute
None.gifCacheKeyDependency             使緩存依賴於一個特定鍵值
None.gifSqlCacheDependency               使緩存依賴於一個特定數據庫實體
2.3 參數化命令  XxxParameter 類型指定參數來源
None.gif名稱                                      描述
None.gifSelectParameters                爲查詢命令指定參數
None.gifInsertParameters                爲插入命令指定參數
None.gifUpdateParameters              爲更新命令指定參數
None.gifDeleteParameters               爲刪除命令指定參數
None.gifFilterParameters                 爲過濾器命令指定參數
2.4 XxxParameter 類型
None.gif名稱                                               描述
None.gifControlParameter                         指定一個源自於控件的參數
None.gifCookieParameter                          指定一個源自於cookie的參數
None.gifFormParameter                             指定一個源自於表單的參數
None.gifProfileParameter                           指定一個源自於profile的參數
None.gifQueryStringParameter                 制定於一個來源於查詢字符串的參數
None.gifParameter                                      爲數據源綁定一個參數
None.gifSessionParameter                        指定一個源自於session的參數
2.5 使用ControlParameter例子
None.gif<asp:SqlDataSourceID="Countries" RunAt="server"
None.gifConnectionString
="server=localhost;database=northwind;"
None.gifSelectCommand
="select distinct country from customers order by country" />
None.gif
<asp:SqlDataSourceID="Customers" RunAt="server"
None.gifConnectionString
="server=localhost;database=northwind;"
None.gifSelectCommand
="select * from customers where country =@Country">
None.gif
<SelectParameters>
None.gif
<asp:ControlParameterName="Country" ControlID="MyDropDownList"
None.gifPropertyName
="SelectedValue" />
None.gif
</SelectParameters>
None.gif
</asp:SqlDataSource>
None.gif
<asp:DropDownListID=" MyDropDownList" DataSourceID="Countries"
None.gifDataTextField
="country" AutoPostBack="true" RunAt="server" />
None.gif
<asp:DataGridDataSourceID="Customers" RunAt="server" />
2.7 調研存儲過程例子
None.gif<asp:SqlDataSourceID="Countries" RunAt="server"
None.gifConnectionString
="server=localhost;database=northwind;"
None.gifSelectCommand
="proc_GetCountries" />
None.gif
<asp:SqlDataSourceID="Customers" RunAt="server"
None.gifConnectionString
="server=localhost;database=northwind;"
None.gifSelectCommand
="proc_GetCustomers">
None.gif
<SelectParameters>
None.gif
<asp:ControlParameterName="Country" ControlID="MyDropDownList"
None.gifPropertyName
="SelectedValue" />
None.gif
</SelectParameters>
None.gif
</asp:SqlDataSource>
None.gif
<asp:DropDownListID="MyDropDownList" DataSourceID="Countries"
None.gifDataTextField
="country" AutoPostBack="true" RunAt="server" />
None.gif
<asp:DataGridDataSourceID="Customers" RunAt="server" />
None.gifCREATE PROCEDURE proc_GetCustomers
None.gif@Country nvarchar(32) AS
None.gifSELECT * FROM Customers
None.gifWHERE Country = @Country
None.gifGO
None.gifCREATE PROCEDURE proc_GetCustomers
None.gifCREATE PROCEDURE proc_GetCountriesAS
None.gifSELECT DISTINCT Country
None.gifFROM Customers
None.gifORDER BY Country
None.gifGO
3.XmlDataSource 使用XML 作爲數據源
支持緩存與XSL 轉換,只支持查詢綁定,不支持更新
None.gif<asp:XmlDataSourceID="Rates" DataFile="Rates.xml" RunAt="server" />
None.gif
<asp:TreeViewID="MyTreeView" DataSourceID="Rates" RunAt="server" />
3.1 XmlDataSource的關鍵屬性
None.gif名稱                                                    描述
None.gifDataFile XML                                    數據文件的路徑
None.gifTransformFile                                    含有XSL 風格定義的數據文件路徑
None.gifEnableCaching                                  指定是否開啓cache (默認值= false)
None.gifXPath XPath                                      表達式用來確認數據
None.gifCacheDuration                                  以秒爲單位的時間間隔
None.gifCacheExpirationPolicy                     指定時間間隔是sliding 還是absolute
None.gifCacheKeyDependency                    創建緩存依存於某個鍵
None.gif
4. ObjectDataSource
從數據組件綁定數據,提供中間件的數據綁定,使數據訪問和UI脫離,兩種數據綁定方式
SelectMethod, InsertMethod, UpdateMethod,and DeleteMethod
可選擇是否使用緩存,可選擇是否使用參數
4.1 ODS 關鍵屬性
None.gifODS 關鍵屬性
None.gif名稱                                                         描述
None.gifInsertParameters                                    指定插入方法參數
None.gifUpdateParameters                                 指定更新方法參數
None.gifDeleteParameters                                   指定刪除方法參數
None.gifSelectParameters                                    指定查詢方法參數
None.gifCacheDuration                                       緩存間隔時間以秒爲單位
None.gifSqlCacheDependency                          基於某個數據實體的緩存
None.gif創建和清除
None.gifObjectDataSource.SelectMethod 可以使用靜態方法也可以使用一個類的新實例
None.gif如果使用實例方法:ODS 在每次調用的時候創建一個新實例類必須具有公共的建構函數
None.gif使用ObjectCreated 和ObjectDisposing 元素可以初始化和撤銷函數
5.增強的DataGrid 控件
支持複雜的數據單元格類型,包括CheckBoxFields在<Columns> 元素中聲明高可定製的用戶界面
gridView 列類型:
None.gif名稱                                             描述
None.gifBoundField                                 顯示數據庫中取出的文本
None.gifButtonField                                顯示按鈕
None.gifCheckBoxField                           使用check boxes顯示一個boolean型變量
None.gifHyperLinkField                          顯示一個超鏈接
None.gifTemplateField                            顯示一個自定義的HTML模板
None.gifCommandField                          顯示一個查詢或者編輯按鈕
None.gifImageField                                 顯示一個圖片
6. 衝突判定
None.gif先入勝利
None.gif如果數據在取出之後被改變,則修改失敗
None.gifUpdateCommand結構構成指定ConflictDetection
=“CompareAllValues”來實現
None.gif後入勝利
None.gif無論數據是否被修改,該修改都會成功
None.gifUpdateCommand結構構成指定ConflictDetection
=“OverwriteChanges”來實現
6.1 先入勝利法則更新
None.gif<asp:SqlDataSourceID="Employees" RunAt="server"
None.gifConnectionString
="server=localhost;database=northwind;"
None.gifSelectCommand
="select employeeid, lastname, firstnamefrom employees"
None.gifUpdateCommand
="update employees set lastname=@lastname, firstname=
None.gif@firstnamewhere employeeid=@original_employeeid and lastname=
None.gif@original_lastnameand firstname=@original_firstname"

None.gifConflictDetection
="CompareAllValues">
None.gif
<UpdateParameters>
None.gif
<asp:ParameterName="EmployeeID" Type="Int32" />
None.gif
<asp:ParameterName="lastname" Type="String" />
None.gif
<asp:ParameterName="firstname" Type="String" />
None.gif
</UpdateParameters>
None.gif
</asp:SqlDataSource>
None.gif
<asp:GridViewDataSourceID="Employees" Width="100%" RunAt="server"
None.gifDataKeyNames
="EmployeeID" AutoGenerateEditButton="true" />
7.錯誤檢測
數據更新後控件調用的事件GridView.RowUpdated,DetailsView.ItemUpdated,SqlDataSource.Updated, etc.
處理“status”的事件,無論數據庫是否異常允許數據庫異常被處理或者再次拋棄,顯示多少數據庫行被修改
處理更新錯誤
None.gif<asp:SqlDataSourceID="Employees" RunAt="server" 
None.gifUpdateCommand
="" OnUpdated="OnUpdateComplete">
None.gif
None.gif
</asp:SqlDataSource>
None.gif
None.gifvoid OnUpdateComplete (Object source, SqlDataSourceStatusEventsArgse)
None.gif{
None.gifif (e.Exception!= null) {
None.gif// Exception thrown. Set e.ExceptionHandledto true to prevent
None.gif// the SqlDataSourcefrom throwing an exception, or leave it set
None.gif// to false to allow SqlDataSourceto rethrowthe exception
None.gif}
None.gifelse if (e.AffectedRows== 0) {
None.gif// No exception was thrown, but no records were updated,either.
None.gif// Might want to let the user know that the update failed
None.gif}
None.gif}
posted on 2006-09-25 17:21 頭髮亂了 閱讀(232) 評論(1)  編輯 收藏 所屬分類: ADO.NET
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章