我有一个列表框,用户可以从中选择多个项目,但是我需要将这些多个选定项目传递给对象数据源中的select参数,然后启动查询报告查看器报告。
现在,我可以很容易地让它适用于一个选定的项目,但我如何才能让它不止一个?
谢谢
答案 0 :(得分:0)
这是一篇旧帖子,但可能对其他人有所帮助。 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>