我有一个列表框,用户可以从中选择多个项目,但我需要将这些多个选定项目传递给对象数据源中的选择参数,然后它将触发对 reportviewer 报告的查询。
现在,我可以很容易地让它适用于一个选定的项目,但我如何让它适用于多个项目呢?
谢谢
我有一个列表框,用户可以从中选择多个项目,但我需要将这些多个选定项目传递给对象数据源中的选择参数,然后它将触发对 reportviewer 报告的查询。
现在,我可以很容易地让它适用于一个选定的项目,但我如何让它适用于多个项目呢?
谢谢
这是一个旧帖子,但可能对其他人有所帮助。ListItemCollection 不可序列化,因此您不能将 Items 属性用作 ControlParameter。
在阅读了一些令我不满意的解决方案后,我将 ListBox 类扩展为:
[ToolboxData("<{0}:ListBoxExtended runat=server></{0}:ListBoxExtended>")]
public class ListBoxExtended : ListBox
{
public IEnumerable<string> SelectedValues
{
get
{
var results = new List<String>();
if (SelectionMode == ListSelectionMode.Single)
{
results.Add(SelectedValue);
}
else
{
foreach (ListItem item in Items)
if (item.Selected)
results.Add(item.Value);
}
return results;
}
}
}
现在,您可以在 ObjectDatasource 的 ControlParameter 中使用 SelectedValues 新属性
请记住在 .aspx 中注册 ListBoxExtended 命名空间和程序集
<%@ Register Assembly="MyExtendedControls"
Namespace="MyControls" TagPrefix="custom" %>
并替换<aspnet:Listbox ...>
为:
<custom:ListBoxExtended ... > ... </custom:ListBoxExtended>