【问题标题】:How to Reference TextBox in One UserControl from Another UserControl如何从另一个用户控件引用一个用户控件中的文本框
【发布时间】:2011-01-19 20:33:34
【问题描述】:

我在 MasterPage 上有两个 UserControl。 DataEntryUC 包含几个 TextBoxes 和 DropDownList。 NavSaveUC 包含导航按钮。当用户点击导航按钮时,我将从 NavSaveUC UserControl 保存输入到 DataEntryUC 中的数据。

我的数据库中有几个表,其中包含与 DataEntryUC 相关的存储过程名称、控件名称、控件类型、SqlDbTypes 等。

如何从 NavSaveUC 引用 DataEntryUC 上的文本框?

我一直在研究 NavSaveUC 的以下代码,但没有成功。

Dim MyControlName = "txtFirstName"
Dim MyControlType = "TextBox"
Dim MyStringValue as String
Dim tmpTxtControl as TextBox
Dim tmpDdlControl as DropDownList

Select Case MyControlType
    Case "TextBox"
        tmpTxtControl = CType(Page.FindControl(MyControlName, TextBox)
        MyStringValue = tmpTxtControl.Text                  
    Case "DropDownList"
        tmpDdlControl = CType(Page.FindControl(MyControlName, DropDownList)
        MyStringValue = tmpDdlControl.SelectedValue
End Select

谢谢!

【问题讨论】:

    标签: asp.net vb.net user-controls


    【解决方案1】:

    将文本框公开为用户控件的属性并以这种方式访问​​它。但是,这种类型的依赖并不是最佳实践。

    【讨论】:

    • 是的,将该控件公开为属性是简单且最佳的方法。这是一个例子..dotnetcurry.com/ShowArticle.aspx?ID=155
    • 当按照所示示例进行操作时,它们将引用页面源代码中的控件。 () 我将针对多个用户控件使用此按钮导航控件。我必须引用将与我的 NaveSaveUC 结合使用的所有用户控件对吗?
    • 只需引用按钮所在页面上的相关用户控件即可。此外,如果在其他地方使用用户控件,则必须手动部署它们。
    • 我在每个 aspx 页面上有多个用户控件。例如... Birth.aspx 页面正在使用 MasterPage。 Birth.aspx 还包含以下用户控件:DataEntryUC_1.ascx、DataEntryUC_2.ascx、DataEntryUC_3.ascx 和 NavSaveUC.ascx。每个 .aspx 页面上都会有多种用户控件组合。我无法使用 NavSaveUC 添加相关控件,可以吗?
    • 只需添加您正在使用的任何一个。您可以根据需要拥有任意数量。
    【解决方案2】:

    如果一个用户控件嵌入在另一个用户控件中,则只需将其作为控件的属性公开即可。但是,如果两个用户控件分别存在于同一页面上,则控件不应直接相互交互以避免控件之间的依赖关系。

    相反,您应该将页面用作两个控件之间的中介。例如,NavSaveUC 可以在执行操作时引发事件,其事件参数中包含数据。该页面可以处理来自 NavSaveUC 的事件。如果 DataEntryUC 将文本框或文本框的文本属性公开为公共属性,则页面的事件处理程序可以从 NavSaveUC 的事件参数中获取数据并将其放入 DataEntryUC 的文本框中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-22
      • 1970-01-01
      • 2015-10-04
      • 2015-10-04
      • 2011-11-11
      相关资源
      最近更新 更多