【问题标题】:ASP.NET Event for User Control用于用户控制的 ASP.NET 事件
【发布时间】:2010-05-18 05:32:59
【问题描述】:

在 aspx 页面中,我使用了一个包含按钮的用户控件。当单击复选框(在 aspx 中)时,我需要隐藏按钮(在用户控件中)。我有一个复选框的回发。我想在选中复选框时隐藏按钮。在哪种情况下我应该进行隐藏和取消隐藏?

我无法在用户控件中添加额外的属性。是否可以使用 FindControl 访问按钮并禁用它?可以使用哪个事件?

请帮忙

谢谢

李乔

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    您将在复选框单击事件中进行隐藏.....

    你的问题是如何让你的aspx页面与你交流ascx?

    在您的 ascx 中公开一个公共方法并从您的 aspx onSelectChanged 为您的 Checkbox 调用它

    【讨论】:

      【解决方案2】:
          protected void myCheckBox_CheckedChanged(object sender, EventArgs e)
          {
              ucMyControl.ButtonVisible = ((CheckBox)sender).Checked;
          }
      

      并在您的用户控件中定义:

          public bool ButtonVisible
          {
              set { myButton.Visible = value; }
          }
      

      【讨论】:

      • 如果它有 Visible 属性应该不是问题
      • 我无法在用户控件中添加额外的属性。是否可以使用 FindControl 访问按钮并禁用它?可以使用哪个事件?
      • 好吧,如果您至少有一个对用户控件的引用并且知道按钮的 ID,这是可能的。您需要在 ucMyControl.Controls 集合上递归地执行 FindControl()。查看这篇文章的算法:stevesmithblog.com/blog/recursive-findcontrol
      【解决方案3】:

      您是否可以修改用户控件?最好的解决方案肯定是在用户控件上暴露一个公共属性或方法,然后让页面上的复选框点击事件通过自定义属性或方法与用户控件进行通信。

      FindControl 可能有效,但是如果页面知道用户控件内的按钮 ID 并且不应该这样做恕我直言,那么您将打破封装的概念...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多