0

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

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

谢谢

4

1 回答 1

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>
于 2014-06-12T17:40:00.247 回答