0

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

  • 类别
  • 品牌
  • 产品

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

问题:页面可以包含一个GridViewDataSource控件,该控件需要一个附加Where参数来获取所需的所有数据,并且该参数可能取决于 ProductsDropDownList控件中的选定产品。

问题:那么我怎样才能从 Products DropDownList 中获取 Selected Product Value以将其绑定到SQLDataSource或任何其他DataSource控件。

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

  • 我可以使用选择产品后更新的静态变量。该字段变量可以是公共的,因此每个人都可以访问它
  • Selected Products DropDownList 可以为我创建一个 QueryString 字段来获取所选值。
  • 以同样的方式,下拉列表可以动态创建一个 Session 变量,我可以获取该值
  • 它也许可以创建一个隐藏字段。

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

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

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

4

2 回答 2

2

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

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

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

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

于 2010-10-12T17:28:14.623 回答
0

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

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

于 2010-10-12T16:20:48.583 回答