Access Variables in the Data Access Layer
Updated October 20, 2006
Iron Speed Designer V4.0 and later
Iron Speed Designer-applications maintain strict separation between the Presentation Layer (user interface) and the Data Access Layer. While code customizations are typically added to an application’s Presentation Layer code-behind files, it is sometimes useful to add customizations in the Data Access Layer. If your Data Access Layer customization depends on the value of a control which is not data bound, you can retrieve it with the help of the DataAccessSettings class. The DataAccessSettings class can also be used to retrieve other useful information, such as the SignedInUserId and the SignedInUserName.
In the example below, the AddOrders.aspx page has an ASP.NET TextBox control. The value of the text box cannot be accessed directly in the Data Access Layer, so the value is passed from the Presentation Layer to the Data Access Layer via the SystemUtils.SetDataAccessSettingsParameterValue method.
Step 1: Handle the GetUIData() method in the RecordControl class of AddOrders.aspx. Use the SetDataAccessSettingsParameterValue method to pass the value of the ASP.NET text box.
The SetDataAccessSettingsParameterValue method has two arguments. The first argument is a key and the second argument is its value. In the code below, “MYKEY” is the key and its value is “myKeyValue”. The SetDataAccessSettingsParameterValue method can be called in any methods and, in this example, is called in the GetUIData() event in the AddOrders class.
The DataAccessSettings class is used to retrieve the value of the ASP.NET text box in the Data Access Layer. Override the GetUIData() method in the OrdersRecordControl class, located in:
<App Folder>\App_Code\Orders\AddOrders.Controls.cs or .vb
C#:
public override void GetUIData()
{
base.GetUIData();
this.Page.SystemUtils.SetDataAccessSettingsParameterValue("MYKEY", "myValue");
}
Visual Basic .NET:
Public Overrides Sub GetUIData()
MyBase.GetUIData
Me.Page.SystemUtils.SetDataAccessSettingsParameterValue("MYKEY", "myValue")
End Sub
Step 2: Add the following code in the OrdersRecord class in the Data Access Layer. This code overrides the default constructor with a newly defined OrderRecord_InsertedRecord() method. This new method gets the DataAccessSetting object which contains the key value. In addition, the UserID and Password can be retrieved from this object.
The OrdersRecord class is located in:
<Application Folder>\App_Code\Business Layer\OrdersRecord.cs or .vb
C#:
public OrdersRecord()
{
this.InsertedRecord+= new
BaseClasses.IRecordWithTriggerEvents.InsertedRecordEventHandler(OrdersRecord_InsertedRecord);
}
private void OrdersRecord_InsertedRecord(object sender, System.EventArgs e)
{
DataAccessSettings dataAccessSettingsObj = DataAccessSettings.Current;
if(dataAccessSettingsObj.ContainsKey("MYKEY"))
{
String myKey = (String)dataAccessSettingsObj["MYKEY"];
String myUserID = dataAccessSettingsObj.SignedInUserId;
String myUserName = dataAccessSettingsObj.SignedInUserName;
//More code customization to fit your logic
}
}
Visual Basic .NET:
Public Sub New()
MyBase.New
AddHandler InsertedRecord, AddressOf Me.OrdersRecord_InsertedRecord
End Sub
Private Sub OrdersRecord_InsertedRecord(ByVal sender As Object, ByVal e As System.EventArgs)
Dim dataAccessSettingsObj As DataAccessSettings = DataAccessSettings.Current
If dataAccessSettingsObj.ContainsKey("MYKEY") Then
Dim myKey As String = CType(dataAccessSettingsObj("MYKEY"),String)
Dim myUserID As String = dataAccessSettingsObj.SignedInUserId
Dim myUserName As String = dataAccessSettingsObj.SignedInUserName
‘More code customization to fit your logic
End If
End Sub
Note: You can retrieve the value of a control in any of the events available in the OrdersRecord class based on where you want to add your business logic. The events available in the OrdersRecord class are:
InsertingRecord
InsertedRecord
SavingRecord
SavedRecord
DeletingRecord
DeletedRecord
UpdatedRecord
UpdatingRecord