2011-01-19 65 views
1

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

我在我的数据库中有几个包含与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 

谢谢!

回答

1

将文本框作为用户控件的属性公开,并以此方式访问它。尽管如此,这种依赖关系并不是最佳实践。

+1

是的,将控件作为属性公开是容易和最好的方法。这是一个例子..http://www.dotnetcurry.com/ShowArticle.aspx?ID = 155 – AspNetDev 2011-01-19 21:08:50

1

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

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

相关问题