【发布时间】:2017-04-05 06:13:57
【问题描述】:
ObjectDataSource 的 SQL 自定义分页查询,允许每个请求只提供与特定页面相关的数据,从而提高加载速度。
问题是如何使分页成为可选?
string Query = @"
DECLARE @PagedData int
SET @PagedData = 1
SELECT
CASE
WHEN @PagedData = 1
THEN (SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY " + _sortColumns + @") AS ResultRank, *
FROM dbTable
WHERE (FeatureString LIKE '%gold%')
AS ProductsWithRowNumber WHERE ResultRank >
" + startIndex + " AND ResultRank <= (" + startIndex + " + " + pageSize + @"))
ELSE (SELECT * FROM dbTable WHERE (FeatureString LIKE '%gold%'))
END";
目标是让 SQL 函数能够仅获取该特定页面的数据,或者它可以关闭分页获取所有相关数据。
以上是我尝试使用CASE根据变量PagedData的值来切换查询是否分页。然而,这种方法以错误告终。
如果您需要我澄清任何事情,请告诉我,谢谢。
【问题讨论】:
-
“失败”是什么意思?有什么错误信息吗?
-
错误:“当不使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式。”
-
你能得到最后一句话吗,可能是一个断点,或者保存在一个文本文件中,或者一个消息框?
-
我想你想要的是
IF,而不是CASE。
标签: c# sql customization objectdatasource