从Web用户控件获取控制值

时间:2010-10-12 16:13:04

标签: asp.net web-user-controls

假设我在Web用户控件中有三个DropDownList控件,它们彼此依赖。

  • 分类
  • 品牌
  • 产品

说明: 从“类别”下拉列表中选择一个类别后,相关品牌将加载到品牌DropDownList中,当我选择特定品牌时也会出现同样的情况,因为我在不同页面上使用它太多,所以它们都位于Web用户控件中,我不想在所有页面上复制和粘贴相同的代码。

问题:这些网页可以包含GridViewDataSource控件,需要额外的Where参数来获取所需的所有数据,该参数可以取决于产品DropDownList控件中的所选产品。

问题那么我如何从产品DropDownList中获取选定的产品价值,以将其绑定到SQLDataSource或任何其他DataSource控件。

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

  • 我可以使用静态变量,一旦选择了产品就会更新。该字段变量可以是公开的,因此每个人都可以访问它
  • 选定的产品DropDownList可以为我创建一个QueryString字段来绘制选定的值。
  • 以同样的方式,下拉列表可以动态创建一个Session变量,我可以获取值
  • 它可以创建隐藏字段。

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

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

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

2 个答案:

答案 0 :(得分:2)

如果我正确理解了这个问题:

您可以向用户控件添加属性,以公开产品DDL选定值。

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

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

答案 1 :(得分:0)

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

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