The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何得知 LinqDataSource 沒有選取到任何資料

在 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>