我创建了一个下拉列表,该列表根据搜索框中显示的值进行过滤。 但是问题是直到我在“搜索”框中输入值,下拉列表处于禁用状态。 有什么方法可以让我默认在加载时获取整个列表,然后使用搜索框过滤列表。
答案 0 :(得分:0)
这很简单。这是创建类似报告的步骤。
如果要严格遵循,则将需要WideWorldImporters示例数据库的副本,因为这就是我用作示例数据的地方。
以下报告仅列出了客户及其电话号码,列出的客户是基于客户的下拉列表,而该下拉列表是基于“搜索”参数的内容的。
要开始,请创建一个新的空白报告
添加一个名为pSearch
的参数,设置Allow blank value ("")
选项ON
。在默认值标签中,选择Specify values
,单击Add
,但将“值”留为空白。这一点很重要...
接下来,添加一个名为dsCustomer
的数据集。该查询会将数据提供给下拉列表,因此我们将基于刚刚设置的pSearch
参数进行过滤。
数据集查询应如下所示。
SELECT CustomerID, CustomerName FROM [Sales].[Customers]
WHERE
(CustomerName LIKE '%' + @pSearch + '%'
OR
ISNULL(LEN(@pSearch),0)=0
)
ORDER BY CustomerName
如果参数为空或为null,则将返回完整列表,否则将返回过滤列表。
接下来,创建一个名为pCustomers
的参数,将Allow multiple values
设置为ON
。将可用值设置为Get values from a query
,然后将其指向dsCustomer
数据集。
您现在可以测试参数,当报表首次打开时,客户列表将已满,但是如果您键入搜索参数,然后再次将客户列表放下,则会看到过滤列表。
这可能就是您所需要的,我完成了如下报告
创建另一个名为dsMain
的数据集。这样会将数据提供给最终报告表,以便根据我们的pCustomers参数进行过滤。
数据集查询将类似
。SELECT CustomerID, CustomerName, PhoneNumber FROM [Sales].[Customers]
WHERE CustomerID IN (@pCustomers)
ORDER BY CustomerName
最后,我在报表中放置了一个表格并将其绑定到dsMain
最终报告如下所示,然后首先打开。
如果我在seearch参数中输入ala
,然后再次将列表放下,我会看到。
重要:请记住,参数名称是Case Sensistive,因此名称必须与数据集查询完全匹配。