ASP.NET 2.0 綁定進階技巧

來源:互聯網
上載者:User
asp.net|進階|技巧

1.簡單資料繫結定


<!--ASP.NET 1.x data binding expression -->
<%# DataBinder.Eval(Container.DataItem, "Price") %>
<!--Equivalent ASP.NET 2.0 data binding expression -->
<%# Eval("Price") %>
<!--XML data binding -->
<%# XPath("Price") %>2.資料來源控制項
控制項名                                     控制項描述
SqlDataSource                       一切支援SQL語句的資料來源控制項
AccessDataSource               Access資料來源控制項
XmlDataSource                     XML資料來源控制項
ObjectDataSource                自行編寫組件的資料來源控制項
SiteMapDataSource             頁面導航控制項的資料來源控制項 2.1 SqlDataSource關鍵屬性
名稱                                               描述
ConnectionString                        串連資料庫的連接字串
SelectCommand                           用於執行查詢的命令
InsertCommand                           用於執行插入的命令
UpdateCommand                        用於執行更新的命令
DeleteCommand                          用於執行刪除的命令
DataSourceMode                        指定資料來源類型是DataSet 或DataReader( 預設值= DataSet)
ProviderName                              指定供應商(預設值= SQL Server .NET provider) 2.2 SqlDataSource 支援通過以下屬性進行資料緩衝
屬性名稱                                         描述
EnableCaching                           指定是否開啟緩衝(預設值= false)
CacheDuration                           指定結果被緩衝多少妙
CacheExpirationPolicy              指定緩衝間隔是sliding 還是absolute
CacheKeyDependency             使緩衝依賴於一個特定索引值
SqlCacheDependency               使緩衝依賴於一個特定資料庫實體2.3 參數化命令  XxxParameter 類型指定參數來源
名稱                                      描述
SelectParameters                為查詢命令指定參數
InsertParameters                為插入命令指定參數
UpdateParameters              為更新命令指定參數
DeleteParameters               為刪除命令指定參數
FilterParameters                 為過濾器命令指定參數2.4 XxxParameter 類型
名稱                                               描述
ControlParameter                         指定一個源自於控制項的參數
CookieParameter                          指定一個源自於cookie的參數
FormParameter                             指定一個源自於表單的參數
ProfileParameter                           指定一個源自於profile的參數
QueryStringParameter                 制定於一個來源於查詢字串的參數
Parameter                                      為資料來源綁定一個參數
SessionParameter                        指定一個源自於session的參數2.5 使用ControlParameter例子 <asp:SqlDataSourceID="Countries" RunAt="server"
ConnectionString="server=localhost;database=northwind;"
SelectCommand="select distinct country from customers order by country" />
<asp:SqlDataSourceID="Customers" RunAt="server"
ConnectionString="server=localhost;database=northwind;"
SelectCommand="select * from customers where country =@Country">
<SelectParameters>
<asp:ControlParameterName="Country" ControlID="MyDropDownList"
PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>
<asp:DropDownListID=" MyDropDownList" DataSourceID="Countries"
DataTextField="country" AutoPostBack="true" RunAt="server" />
<asp:DataGridDataSourceID="Customers" RunAt="server" />2.7 調研預存程序例子
<asp:SqlDataSourceID="Countries" RunAt="server"
ConnectionString="server=localhost;database=northwind;"
SelectCommand="proc_GetCountries" />
<asp:SqlDataSourceID="Customers" RunAt="server"
ConnectionString="server=localhost;database=northwind;"
SelectCommand="proc_GetCustomers">
<SelectParameters>
<asp:ControlParameterName="Country" ControlID="MyDropDownList"
PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>
<asp:DropDownListID="MyDropDownList" DataSourceID="Countries"
DataTextField="country" AutoPostBack="true" RunAt="server" />
<asp:DataGridDataSourceID="Customers" RunAt="server" />
CREATE PROCEDURE proc_GetCustomers
@Country nvarchar(32) AS
SELECT * FROM Customers
WHERE Country = @Country
GO
CREATE PROCEDURE proc_GetCustomers
CREATE PROCEDURE proc_GetCountriesAS
SELECT DISTINCT Country
FROM Customers
ORDER BY Country
GO3.XmlDataSource 使用XML 作為資料來源
支援緩衝與XSL 轉換,只支援查詢繫結,不支援更新
<asp:XmlDataSourceID="Rates" DataFile="Rates.xml" RunAt="server" />
<asp:TreeViewID="MyTreeView" DataSourceID="Rates" RunAt="server" />3.1 XmlDataSource的關鍵屬性
名稱                                                    描述
DataFile XML                                    資料檔案的路徑
TransformFile                                    含有XSL 風格定義的資料檔案路徑
EnableCaching                                  指定是否開啟cache (預設值= false)
XPath XPath                                      運算式用來確認資料
CacheDuration                                  以秒為單位的時間間隔
CacheExpirationPolicy                     指定時間間隔是sliding 還是absolute
CacheKeyDependency                    建立緩衝依存於某個鍵
4. ObjectDataSource
從資料群組件綁定資料,提供中介軟體的資料繫結,使資料訪問和UI脫離,兩種資料繫結方式
SelectMethod, InsertMethod, UpdateMethod,and DeleteMethod
可選擇是否使用緩衝,可選擇是否使用參數
4.1 ODS 關鍵屬性
ODS 關鍵屬性
名稱                                                         描述
InsertParameters                                    指定插入方法參數
UpdateParameters                                 指定更新方法參數
DeleteParameters                                   指定刪除方法參數
SelectParameters                                    指定查詢方法參數
CacheDuration                                       緩衝間隔時間以秒為單位
SqlCacheDependency                          基於某個資料實體的緩衝
建立和清除
ObjectDataSource.SelectMethod 可以使用靜態方法也可以使用一個類的新執行個體
如果使用執行個體方法:ODS 在每次調用的時候建立一個新執行個體類必須具有公用的建構函數
使用ObjectCreated 和ObjectDisposing 元素可以初始化和撤銷函數5.增強DataGrid 控制項
支援複雜的資料儲存格類型,包括CheckBoxFields在<Columns> 元素中聲明高可定製的使用者介面
gridView 列類型:
名稱                                             描述
BoundField                                 顯示資料庫中取出的文本
ButtonField                                顯示按鈕
CheckBoxField                           使用check boxes顯示一個boolean型變數
HyperLinkField                          顯示一個超連結
TemplateField                            顯示一個自訂的HTML模板
CommandField                          顯示一個查詢或者編輯按鈕
ImageField                                 顯示一個圖片6. 衝突判定
先入勝利
如果資料在取出之後被改變,則修改失敗
UpdateCommand結構構成指定ConflictDetection=“CompareAllValues”來實現
後入勝利
無論資料是否被修改,該修改都會成功
UpdateCommand結構構成指定ConflictDetection=“OverwriteChanges”來實現6.1 先入勝利法則更新
<asp:SqlDataSourceID="Employees" RunAt="server"
ConnectionString="server=localhost;database=northwind;"
SelectCommand="select employeeid, lastname, firstnamefrom employees"
UpdateCommand="update employees set lastname=@lastname, firstname=
@firstnamewhere employeeid=@original_employeeid and lastname=
@original_lastnameand firstname=@original_firstname"
ConflictDetection="CompareAllValues">
<UpdateParameters>
<asp:ParameterName="EmployeeID" Type="Int32" />
<asp:ParameterName="lastname" Type="String" />
<asp:ParameterName="firstname" Type="String" />
</UpdateParameters>
</asp:SqlDataSource>
<asp:GridViewDataSourceID="Employees" Width="100%" RunAt="server"
DataKeyNames="EmployeeID" AutoGenerateEditButton="true" />7.錯誤偵測
資料更新後控制項調用的事件GridView.RowUpdated,DetailsView.ItemUpdated,SqlDataSource.Updated, etc.
處理“status”的事件,無論資料庫是否異常允許資料庫異常被處理或者再次拋棄,顯示多少資料庫行被修改
處理更新錯誤
<asp:SqlDataSourceID="Employees" RunAt="server"
UpdateCommand="" OnUpdated="OnUpdateComplete">

</asp:SqlDataSource>

void OnUpdateComplete (Object source, SqlDataSourceStatusEventsArgse)
{
if (e.Exception!= null) {
// Exception thrown. Set e.ExceptionHandledto true to prevent
// the SqlDataSourcefrom throwing an exception, or leave it set
// to false to allow SqlDataSourceto rethrowthe exception
}
else if (e.AffectedRows== 0) {
// No exception was thrown, but no records were updated,either.
// Might want to let the user know that the update failed
}
}



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。