LINQ to SQL數據模型概括
在本系列的Part 5部分,我提到了。NET 3。5里新引入的<asp:LinqDataSource>控件,利用它我們可以輕易的將ASP。NET UI控件綁定到LINQ to SQL數據模型。在另一篇有關<asp:ListView>控件的文章里(Part 1 - Building a Product Listing Page with Clean CSS UI),我多多少少演示了其用法。
在這些文章里,我執行的查詢都是比較直觀的(其where子語句都是處理單個表的數據),今天的文章,我將演示如何基于LinqDataSource控件來使用的比較全的LINQ查詢表達式,以及任意的LINQ to SQL查詢表達式。
Quick Recap: <asp:LinqDataSource> with a Declarative Where Statement
在本系列的Part 1 和 Part 5部分,我演示了如何利用LinqDataSource控件內置的條件過濾功能,來對某個LINQ to SQL數據模型進行限制。
比如,假定我們已經為Northwind數據庫創建了一個LINQ to SQL數據模型(具體過程可參考Part 2部分),我們可以在頁面上添加一個<asp:LinqDataSource>控件,并設置一個<where>過濾條件,僅僅返回某個指定category的所有產品。
在大多數情況下沒有問題。但是如果我們想使過濾條件更為復雜一些呢?比如,我們想動態的設置countries,而只將這些國家的產品顯示出來,這么辦呢?
利用<asp:LinqDataSource>控件的Selecting事件
為了處理用戶定制查詢,你可以構建一個事件處理器來處理<asp:LinqDataSource>控件的"Selecting"事件。 在該事件處理器里你可以任意地寫代碼,以檢索你想要得到的結果。為此,你可以利用一個LINQ to SQL查詢表達式,或調用一個存儲過程,或使用一個Custom SQL Expression(用戶定制查詢),以對該LINQ to SQL數據模型進行檢索。一旦你檢索到了一連串的數據(a sequence of data),你需要做的就是將其賦值給一個LinqDataSourceSelectEventArgs對象的"Result"屬性。
【編輯推薦】