在OnSelected被调用之前,LinqDataSource结果变为Null

本文关键字:结果 LinqDataSource Null OnSelected 调用 | 更新日期: 2023-09-27 18:15:27

我在LinqDataSource onselection事件结果中包含5行。在OnSelected事件执行时,结果不包含任何行。为什么会这样?我错过什么了吗?这是我的代码选择事件

protected new void OnDataSourceSelecting(object sender, LinqDataSourceSelectEventArgs e)
     {
        int AdminAccessID = 1;
List<VIEW_ManagerOwned> result = _dataContext.VIEW__ManagerOwneds.Where(ma => (ma.LastName == "West") & (ma.FirstName == "Stacie") & ma.AdminUserAccessID == Convert.ToInt32(AdminAccessID) & ma.SecurityUserID == Convert.ToInt32(1766)).ToList();
        e.Result = result;
     }
protected void ListLinqDataSource_Selected(object sender, LinqDataSourceStatusEventArgs e)
    {
    }

在OnSelected被调用之前,LinqDataSource结果变为Null

我不是LinqDataSourceSelectEventArgs的专家,但我怀疑你期望e.Result的值传递给下一个事件处理程序,在这种情况下是ListLinqDataSource_Selected,但很可能这个处理程序正在获得一组不同的事件参数,这可以解释为什么你没有从Selecting处理程序获得e.Result中的列表。

一个可能的解决方案是在类级别变量中缓存result的值,以便在填充它之后可以访问它。

关于事件处理程序没有将前一个事件参数发送给下一个处理程序,我可能又错了,但我相信这是最有可能导致问题的原因。

添加:就您的代码而言,您确定要在LINQ语句中使用按位&而不是条件&&吗?每个操作符都有使用的时候,但是使用&操作符可能会得到不希望的结果。另外,考虑使用更少的水平空间和更多的垂直空间来格式化代码,因为当您有这么长的一行代码时,很难阅读。此外,通常您不希望按照您正在执行的方式分配给事件参数,因为您可以看到它不会产生您期望的结果。(结果不是双关语)。