2011-01-19 97 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的文本框中。

相關問題