2010-10-12 52 views
0

假设我在网页用户控件中有三个DropDownList控件,它们彼此依赖。从Web用户控件获取控制值

  • 分类
  • 品牌
  • 产品

说明: 我选择从分类类别下拉列表中后,相关品牌都装在品牌DropDownList,当我选择特定的相同情况品牌,他们都位于网络用户控制中,因为我在不同的页面上使用它太多,我不想在所有页面上复制和粘贴相同的代码。

问题:页面可以包含一个GridViewDataSource控制其需要额外的Where参数获取在所需的所有数据和参数可以在产品DropDownList控制内取决于所选产品。

问题:那么如何才能得到从产品的DropDownList选定的产品价值将其绑定到SQLDataSource或任何其他DataSource控制。

我的想法:我相信我可以通过以下方式解决这个问题。

  • 我可以使用更新一次产品选择的静态变量。该字段变量可能是公开的,所以每个人都可以达到它
  • 所选产品DropDownList可以为我创建一个QueryString字段来抓取选定的值。
  • 以同样的方式,下拉列表可以即时创建Session变量,我可以获取值
  • 它可以创建隐藏字段也许。

但:那些是我的一些想法,但我发现他们太天真实施。我需要一些优雅和满足的东西来解决这个问题。它应该像从Web用户控制到外部世界的网关。

也许一个单独的类或属性可以帮助我在网关解决方案。

无论如何,我在等你的答案。

回答

2

如果我理解正确的问题:

您可以将属性添加到公开产品DDL用户选定的值控制。

您还可以从产品DDL选定值更改时触发的用户控件添加和引发事件。创建一个包含产品值的自定义事件参数,允许它直接传递给事件处理程序。

然后,您的页面可以处理由用户控件引发的事件,获得产品价值并绑定网格。

0

您可以将DropDownList.SelectedIndexChanged事件绑定到同一个函数,并测试每个DropDownList的SelectedValue属性。如果它们的SelectedValues有效,则将网格绑定到您的DataSource。

我已经在过去做过这些事情,当我需要用户在查询数据库之前输入一定数量的数据。如果DropDownLists无效,我在GridView上设置Hidden属性,并在正确绑定时重置它。