【问题标题】:Get Control Value From Web User Control从 Web 用户控件中获取控件值
【发布时间】:2010-10-12 16:13:03
【问题描述】:

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

  • 类别
  • 品牌
  • 产品

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

问题:页面可以包含GridViewDataSource 控件,这需要一个额外的Where 参数来获取所需的所有数据,并且该参数可能取决于在产品DropDownList控制。

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

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

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

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

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

不管怎样,我在等你的答案。

【问题讨论】:

    标签: asp.net web-user-controls


    【解决方案1】:

    如果我对问题的理解正确:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-09
        • 1970-01-01
        • 1970-01-01
        • 2015-09-22
        相关资源
        最近更新 更多