题
可以说我有三个 DropDownList
在Web用户控件中进行控件,它们相互依赖。
- 类别
- 品牌
- 产品
解释:在我从类别下拉列表中选择类别后,相关品牌已加载在品牌中 DropDownList
当我选择特定品牌并且它们都位于Web用户控件中时,也会发生同样的情况,因为我在不同的页面上使用了太多,因此我不想在所有页面上复制并粘贴相同的代码。
问题: 这些页面可以包含一个 GridView
和 DataSource
控制需要额外 Where
参数以获取所需的所有数据,该参数可能取决于产品中的选定产品 DropDownList
控制。
问题: 那我怎么能得到 从产品下拉列表中选择的产品值 将其绑定到 SQLDataSource
或其他任何 DataSource
控制。
我的想法: 我相信我可以以随后的方式解决这个问题。
- 我可以使用静态变量,该变量一旦选择了产品就会更新。该字段变量可能是公开的,因此每个人都可以达到
- 选定的产品下拉列表可以创建一个Querystring字段,以供我抓住所选值。
- 以同样的方式,下拉列表可以即时创建会话变量,我可以获取值
- 它可以创建一个隐藏的字段。
但: 好吧,这些是我的一些想法,但我发现它们是如此天真地实施。我需要一些优雅而令人满意的东西来解决这个问题。它应该像从Web用户控制到外部世界的网关一样。
也许单独的类或属性可以在网关解决方案中帮助我。
无论如何,我正在等待您的答案。
解决方案
如果我正确理解这个问题:
您可以将属性添加到用户控件中,该属性曝光产品DDL选定值。
您还可以从用户控件中添加和提出一个事件,当产品DDL选定的值更改时,该事件发射。创建包含产品值的自定义事件参数,允许其直接传递给事件处理程序。
然后,您的页面可以处理用户控件提出的事件,具有产品值并绑定网格。
其他提示
您可以将dropdownlist.selectedIndexchanged事件绑定到相同的函数,并测试每个下拉列表的选定值属性。如果他们选择的值有效,请将网格绑定到您的数据源。
过去,当我需要用户在查询数据库之前输入一定数量的数据时,我已经这样做了。如果下拉列表无效,则将隐藏的属性设置在我的GridView上,并在正确绑定时将其重置。