【问题标题】:How to pass multiple selected items from a listbox to a select parameter in a ObjectDataSource如何将列表框中的多个选定项目传递给 ObjectDataSource 中的选择参数
【发布时间】:2012-11-20 17:13:02
【问题描述】:

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

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

谢谢

【问题讨论】:

  • 那么这个查询currentky的sql如何设置?
  • 带有允许多个值的 in 子句的动态 SQL。正如我在 Sql Management Studio 中测试过的那样,这很有效
  • 抱歉浪费了大家的时间,不过我已经用 stringbuilder 类解决了。
  • 那么请发布答案。有人可能会从中有所收获。

标签: asp.net listbox reportviewer objectdatasource


【解决方案1】:

这是一篇旧帖子,但可能对其他人有所帮助。 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" %>

并将&lt;aspnet:Listbox ...&gt; 替换为:

<custom:ListBoxExtended  ... > ... </custom:ListBoxExtended>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多