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