如何将多个选定项从列表框传递到ObjectDataSource中的select参数

时间:2012-11-20 17:13:03

标签: asp.net listbox reportviewer objectdatasource

我有一个列表框,用户可以从中选择多个项目,但是我需要将这些多个选定项目传递给对象数据源中的select参数,然后启动查询报告查看器报告。

现在,我可以很容易地让它适用于一个选定的项目,但我如何才能让它不止一个?

谢谢

1 个答案:

答案 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>