在 LinqDataSource 的 Selected 事件可以抓到透過 LINQ to SQL 查詢到的資料集,如何你想在判斷沒有選取到任何資料時進行一些動作的話,可以在這個事件進行操作。
例如說你在 Detail 頁面想判斷如果沒有任何資料時,就直接轉向到另一個網頁,可以用以下程式來寫。
protected void ldsNews_Selected(object sender, LinqDataSourceStatusEventArgs e)
{
// 必須先將 e.Result 轉型(Casting)成你在 LinqDataSource 定義的 TableName 集合物件(List)
System.Collections.Generic.List<News> o = e.Result as System.Collections.Generic.List<News>;
if (o.Count == 0)
{
Response.Redirect("NewsList.aspx", true);
}
}
以下是 LinqDataSource 的定義:
<asp:LinqDataSource ID="ldsNews" runat="server" ContextTypeName="MyDataContext"
TableName="News" Where="ID == Guid(@NewsID) && isVisible" OnSelected="ldsNews_Selected">
<WhereParameters>
<asp:QueryStringParameter Name="NewsID" QueryStringField="NewsID" Type="Object" />
</WhereParameters>
</asp:LinqDataSource>