在Lightswitch HTML

时间:2016-02-12 02:37:07

标签: c# html visual-studio-lightswitch

我想要做的是,当用户进行搜索并且查询未返回结果时。我希望能够记录在另一个表中搜索的字符串。

我正在尝试做的事情似乎应该是直截了当的......我的第一个方法是获得PreprocessQuery的计数。

我试过的例子:

    int count = 0;
    partial void QueryName_PreprocessQuery(string ParamName, ref IQueryable<TableName> query)
        {
            if (ParamName != null)
            {
                query = query.Where(a => a.PropertyName.Contains(ParamName));
                count = query.Count();
            }
        }

当我放置断点并逐步完成此方法时。 count始终为0,query始终为空。奇怪的是,这个查询仍然带回了正确的结果。我尝试了各种不同的方法,甚至开始了一个新的Lightswitch项目,只有一个屏幕和一个查询。相同的结果。

我尝试过的另一个例子:

partial void QueryName_PreprocessQuery(string ParamName, ref IQueryable<TableName> query)
            {
                if (ParamName != null)
                {
                    count = query.Count(a => a.Serial_No.Contains(SerialNumber));                    
                }
            }

除了验证query为空并且count为0之外,此方法实际上不执行任何操作。再次......正确的结果仍显示在我的屏幕上。

所以这让我相信也许我不应该试图通过_PreProcessQuery方法计算?

1 个答案:

答案 0 :(得分:0)

我相信你是对的。尝试从QueryName_PreprocessQuery更改为QueryName_Executed。

QueryName_PreprocessQuery在查询形成时和执行之前发生。

QueryName_Executed在执行查询后立即调用,因此应该为您提供您尝试获取的信息。

您可以尝试这样的事情:

partial void QueryName_Executed(QueryExecutedDescriptor queryDescriptor)
    {
        int resultCount = queryDescriptor.Results.Count();
    }