记录一个 returns 在 Lightswitch HTML 中没有结果的查询
Log a query that returns no results in Lightswitch HTML
我想做的是,当用户进行搜索并且查询没有 return 结果时。我希望能够记录在另一个 table.
中搜索到的字符串
我正在尝试做的事情似乎应该是直截了当的...我的第一个方法是获取 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
方法中获取计数?
我相信你是对的。尝试将 QueryName_PreprocessQuery 更改为 QueryName_Executed。
QueryName_PreprocessQuery
在形成查询时和执行之前发生。
QueryName_Executed
在查询执行后立即调用,因此应该为您提供您要获取的信息。
您可以尝试这样的操作:
partial void QueryName_Executed(QueryExecutedDescriptor queryDescriptor)
{
int resultCount = queryDescriptor.Results.Count();
}
我想做的是,当用户进行搜索并且查询没有 return 结果时。我希望能够记录在另一个 table.
中搜索到的字符串我正在尝试做的事情似乎应该是直截了当的...我的第一个方法是获取 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
方法中获取计数?
我相信你是对的。尝试将 QueryName_PreprocessQuery 更改为 QueryName_Executed。
QueryName_PreprocessQuery
在形成查询时和执行之前发生。
QueryName_Executed
在查询执行后立即调用,因此应该为您提供您要获取的信息。
您可以尝试这样的操作:
partial void QueryName_Executed(QueryExecutedDescriptor queryDescriptor)
{
int resultCount = queryDescriptor.Results.Count();
}