StrataFrame Forum

Business Object in User Control

http://forum.strataframe.net/Topic4152.aspx

By Vikram Saxena - 11/6/2006

For making any Business Object accessible in any webpage, i inherit the webpage from ApplicationBasePage but i cant do the same with a User Control, so how can i make any business object available to my User Controls ?
By Trent L. Taylor - 11/6/2006

You will take the same approach as the previos post I made mentioning the definition of BOs in your ApplicationBasePage.

http://forum.strataframe.net/Topic4019-8-1.aspx#bm4151 

By Vikram Saxena - 11/6/2006

Hello Trent,

The BusinessObject works fine in an .aspx page because the aspx page is inherited from ApplicationBasePage but the user control cant refer to the same business object because it is not inherited from the ApplicationBAsePage and I dont think if it can be inherited from applicationbasepage as well. following is a code snippet from Aspx page [which works fine] and from .ascx control [which throws a compilation error since it does not know where the business object is]

Code for .ASCX [ User Control]

Partial Class ListControls_CompanyList

Inherits System.Web.UI.UserControl

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

GridView1.DataSource = oCompanyBO.GetAll("vik")

DataBind()

End Sub

End Class

Code for ASPX page inherited from ApplicationBase Page.

Partial Class List_Company

Inherits MyAppBasePage

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

GridView1.DataSource = oCompanyBO.GetAll("vik")

DataBind()

End Sub

End Class

By Trent L. Taylor - 11/6/2006

What we always do is create a property and then set that property in the Load or the property sheet (depending on how you design it) of the page that uses the control.  This way the control is encapsulated, as it should be.

For example:

Public Property MyCustomers As CustomersBO
...
End Property

This way your control can use the BO that comes from the ApplicationBasePage by simply setting the property when the page is loaded.  Then your control will reference the property instead whenever it needs to access the BO inside of the control.