(动态数据,ASP.Net,C#,下拉列表自定义.ascx控件)如何在DROPDOWNLISTS中传递价值?

时间:2011-01-29 17:25:27

标签: c# delegates drop-down-menu custom-controls asp.net-dynamic-data

我正在使用ASP.Net动态数据,Visual Studio 2010和C#。

我有三个自定义控件(FieldTemplates),扩展名为.ascx:business_type.ascxdepartment.ascxsection.ascx

如果我从第一个组合框中选择了cod_business类型= = 6我只想显示那些 cod_business = 6

的部门

让我们说我有500个部门,但只有5个,128个和446个完成了这个规则。

我们还要说我有2,500个部分:

  1. 40,66和222具有cod_dept = 5和cod_business = 6
  2. 346,399,400,403和458有cod_dept = 128和cod_business = 6
  3. 14,45,333 a,d 335有cod_dept = 446和cod_business = 6
  4. 我还想在第三个组合框中只显示cod_business = 6且cod_dept = 5或128或446的部分,具体取决于我从部门组合框中选择的部分

    请记住:这必须适用于ASP.Net 4.0动态数据

    这可以实现吗?

    我见过Steve Naughton的Cascading解决方案,但它们是面向数据库的。

    我需要以“更多内在形式连接”下拉列表,这意味着我没有用于填充每个下拉列表的实体,但是每个下拉列表中包含的值列表本身。我通常从小型Excel电子表格或小文本文件中提取这些值。

    最好的问候。

1 个答案:

答案 0 :(得分:0)

您最初如何填充下拉列表的值?他们是数据绑定控制吗?

无论如何,您需要一种方法与回发中的这3个控件进行交互以实现过滤。一种方法是将DropDownList作为用户控件的属性公开。在您的代码中,您将添加类似于此的属性:

public DrowDownList List {
get { return this.DropDownInsideTheControl; }
set { this.DropDownInsideTheControl = value; } }

OnSelectedIndexChanged事件添加适当的事件处理程序,并将AutoPostBack设置为true,您应该很高兴。然后在页面上包含您可以管理所需过滤的所有控件。

这种方法可行,但我认为将3个下拉分隔为单独的用户控件会让您的生活更加艰难。这三个控件都是如此密切相关,将它们全部包含在同一个用户控件中可能是有意义的。这样您就可以更直接地与他们互动,并更轻松地管理他们的关联关系。您仍然可以将列表公开给控件正在运行的Page,如上所述。