【问题标题】:find controls that have been selected in asp.net查找已在 asp.net 中选择的控件
【发布时间】:2011-05-17 10:23:43
【问题描述】:

您好,我正在为具有一些独特控件和标准的客户端构建 Web 应用程序。一页包含一个详细的搜索功能,由大约 100 个组合框和列表框组成。我想做的是做一个 foreach(已更改/选择的控件){} 并将其输入到函数中以生成查询。有 100 个,但用户可能只使用三个用于特定搜索?

我知道一定有办法做到这一点。在此先感谢您的帮助

【问题讨论】:

  • 也许你应该有复选框来启用每个标准,这样你就会知道哪些已经被“使用”了。

标签: c# asp.net


【解决方案1】:

你可以使用类似的东西:

List<Control> list = new List<Control>();

public void ControlRecursive(Control Root)
    {
        if(typeof(ComboBox) == Root.GetType() && ((ComboBox)Root).Checked)
            list.Add(Root);
        else if (Root is RadListBox)
        {
            // deal with RadListBox here
        }
        // if all your other types
        // ...

        foreach (Control Ctl in Root.Controls)
            ControlRecursive(Ctl);
    }

然后用ControlRecursive(form1);调用它

【讨论】:

  • 这正是我正在尝试做的我正在玩弄 java 数组的想法,但我对 java 充其量是不稳定的。让我问你一个问题。我正在使用 Telerick RadListBox,我似乎无法识别 typeof。它适用于普通的 asp 控件,不建议?
  • 您应该将其作为一个单独的问题提出,我不知道答案,只是说 RadListBox 可能继承自 ListBox 类型,您可以检查一下。 typeof() 适用于自定义类,所以我真的不确定为什么它不起作用。如果您特别需要它,那么就如何在该控件中使用该 if 语句开始另一个问题。很高兴我能对循环有所帮助。
  • 我最终使用移动到常规列表框,我想使用 rad 列表框的唯一原因是因为您可以轻松添加一个我觉得对用户更友好的复选框。再次感谢您的帮助
  • @bumble_bee_tuna 查看编辑,还有另一种检查类型的方法,我记得。
【解决方案2】:

您可以为每个控件设置一个与 onchange / select 关联的 javascript 函数,然后将已选择的项目添加到 javascript 数组中。然后,您可以将该数组传递给您的查询生成,以了解要为您的搜索选择哪些变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-20
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 2014-11-08
    相关资源
    最近更新 更多