5357 lines
No EOL
231 KiB
VB.net
5357 lines
No EOL
231 KiB
VB.net
|
|
' This file implements the TableControl, TableControlRow, and RecordControl classes for the
|
|
' EditPersonRelativeTable.aspx page. The Row or RecordControl classes are the
|
|
' ideal place to add code customizations. For example, you can override the LoadData,
|
|
' CreateWhereClause, DataBind, SaveData, GetUIData, and Validate methods.
|
|
|
|
#Region "Imports statements"
|
|
|
|
Option Strict On
|
|
Imports Microsoft.VisualBasic
|
|
Imports BaseClasses.Web.UI.WebControls
|
|
Imports System
|
|
Imports System.Collections
|
|
Imports System.Collections.Generic
|
|
|
|
Imports System.Web
|
|
Imports System.Web.UI
|
|
Imports System.Web.UI.WebControls
|
|
Imports BaseClasses
|
|
Imports BaseClasses.Data
|
|
Imports BaseClasses.Utils
|
|
Imports ReportTools.ReportCreator
|
|
Imports ReportTools.Shared
|
|
|
|
|
|
|
|
Imports Persons.Business
|
|
Imports Persons.Data
|
|
|
|
|
|
#End Region
|
|
|
|
|
|
Namespace Persons.UI.Controls.EditPersonRelativeTable
|
|
|
|
#Region "Section 1: Place your customizations here."
|
|
|
|
|
|
Public Class PersonRelativeTableControlRow
|
|
Inherits BasePersonRelativeTableControlRow
|
|
' The BasePersonRelativeTableControlRow implements code for a ROW within the
|
|
' the PersonRelativeTableControl table. The BasePersonRelativeTableControlRow implements the DataBind and SaveData methods.
|
|
' The loading of data is actually performed by the LoadData method in the base class of PersonRelativeTableControl.
|
|
|
|
' This is the ideal place to add your code customizations. For example, you can override the DataBind,
|
|
' SaveData, GetUIData, and Validate methods.
|
|
Public Overrides Sub GetUIData()
|
|
|
|
' Call MyBase.GetUIData
|
|
MyBase.GetUIData()
|
|
|
|
' Get PersonalDD Record
|
|
Dim myRec As PersonRelativeRecord = Me.GetRecord
|
|
|
|
' Set PersonalId field value to new value string
|
|
myRec.PersonalId = Utils.SecurityControls.GetCurrentUserID
|
|
|
|
End Sub
|
|
|
|
|
|
End Class
|
|
|
|
|
|
|
|
Public Class PersonRelativeTableControl
|
|
Inherits BasePersonRelativeTableControl
|
|
|
|
' The BasePersonRelativeTableControl class implements the LoadData, DataBind, CreateWhereClause
|
|
' and other methods to load and display the data in a table control.
|
|
|
|
' This is the ideal place to add your code customizations. You can override the LoadData and CreateWhereClause,
|
|
' The PersonRelativeTableControlRow class offers another place where you can customize
|
|
' the DataBind, GetUIData, SaveData and Validate methods specific to each row displayed on the table.
|
|
Public Overrides Function CreateOrderBy() As OrderBy
|
|
' The CurrentSortOrder is initialized to the sort order on the
|
|
' Query Wizard. It may be modified by the Click handler for any of
|
|
' the column heading to sort or reverse sort by that column.
|
|
' You can add your own sort order, or modify it on the Query Wizard.
|
|
Dim orderby As OrderBy = New OrderBy(False, False)
|
|
orderby.Add(PersonRelativeTable.RelationId, OrderByItem.OrderDir.Asc)
|
|
orderby.Add(PersonRelativeTable.RBirthDate, OrderByItem.OrderDir.Asc)
|
|
Return orderby
|
|
'Return Me.CurrentSortOrder
|
|
End Function
|
|
|
|
End Class
|
|
|
|
|
|
|
|
#End Region
|
|
|
|
|
|
|
|
#Region "Section 2: Do not modify this section."
|
|
|
|
|
|
' Base class for the PersonRelativeTableControlRow control on the EditPersonRelativeTable page.
|
|
' Do not modify this class. Instead override any method in PersonRelativeTableControlRow.
|
|
Public Class BasePersonRelativeTableControlRow
|
|
Inherits Persons.UI.BaseApplicationRecordControl
|
|
|
|
' To customize, override this method in PersonRelativeTableControlRow.
|
|
Protected Overridable Sub Control_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Init
|
|
|
|
Me.ClearControlsFromSession()
|
|
End Sub
|
|
|
|
' To customize, override this method in PersonRelativeTableControlRow.
|
|
Protected Overridable Sub Control_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
|
|
|
|
'Call LoadFocusScripts from repeater so that onfocus attribute could be added to elements
|
|
Me.Page.LoadFocusScripts(Me)
|
|
|
|
' Show confirmation message on Click
|
|
Me.PersonRelativeRowDeleteButton.Attributes.Add("onClick", "return (confirm('" & (CType(Me.Page,BaseApplicationPage)).GetResourceValue("DeleteRecordConfirm", "Persons") & "'));")
|
|
|
|
|
|
' Register the event handlers.
|
|
|
|
AddHandler Me.PersonRelativeRowDeleteButton.Click, AddressOf PersonRelativeRowDeleteButton_Click
|
|
|
|
AddHandler Me.PersonRelativeRowEditButton.Click, AddressOf PersonRelativeRowEditButton_Click
|
|
|
|
AddHandler Me.PersonalId.SelectedIndexChanged, AddressOf PersonalId_SelectedIndexChanged
|
|
|
|
AddHandler Me.RelationId.SelectedIndexChanged, AddressOf RelationId_SelectedIndexChanged
|
|
|
|
AddHandler Me.RStatus.SelectedIndexChanged, AddressOf RStatus_SelectedIndexChanged
|
|
|
|
AddHandler Me.FLastName.TextChanged, AddressOf FLastName_TextChanged
|
|
|
|
AddHandler Me.FName.TextChanged, AddressOf FName_TextChanged
|
|
|
|
AddHandler Me.MLastName.TextChanged, AddressOf MLastName_TextChanged
|
|
|
|
AddHandler Me.MName.TextChanged, AddressOf MName_TextChanged
|
|
|
|
AddHandler Me.MOrLastName.TextChanged, AddressOf MOrLastName_TextChanged
|
|
|
|
AddHandler Me.RAddress.TextChanged, AddressOf RAddress_TextChanged
|
|
|
|
AddHandler Me.RAmphur.TextChanged, AddressOf RAmphur_TextChanged
|
|
|
|
AddHandler Me.RBirthDate.TextChanged, AddressOf RBirthDate_TextChanged
|
|
|
|
AddHandler Me.Ref1.TextChanged, AddressOf Ref1_TextChanged
|
|
|
|
AddHandler Me.RefDate.TextChanged, AddressOf RefDate_TextChanged
|
|
|
|
AddHandler Me.RFirstName.TextChanged, AddressOf RFirstName_TextChanged
|
|
|
|
AddHandler Me.RLastName.TextChanged, AddressOf RLastName_TextChanged
|
|
|
|
AddHandler Me.RNationality.TextChanged, AddressOf RNationality_TextChanged
|
|
|
|
AddHandler Me.ROrigin.TextChanged, AddressOf ROrigin_TextChanged
|
|
|
|
AddHandler Me.ROrLastName.TextChanged, AddressOf ROrLastName_TextChanged
|
|
|
|
AddHandler Me.RPreName.TextChanged, AddressOf RPreName_TextChanged
|
|
|
|
AddHandler Me.RProvince.TextChanged, AddressOf RProvince_TextChanged
|
|
|
|
AddHandler Me.RReligion.TextChanged, AddressOf RReligion_TextChanged
|
|
|
|
AddHandler Me.RRemark.TextChanged, AddressOf RRemark_TextChanged
|
|
|
|
AddHandler Me.RStatusDate.TextChanged, AddressOf RStatusDate_TextChanged
|
|
|
|
AddHandler Me.RStatusRef.TextChanged, AddressOf RStatusRef_TextChanged
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
Public Overridable Sub LoadData()
|
|
|
|
' Load the data from the database into the DataSource PersonRelative record.
|
|
' It is better to make changes to functions called by LoadData such as
|
|
' CreateWhereClause, rather than making changes here.
|
|
|
|
' The RecordUniqueId is set the first time a record is loaded, and is
|
|
' used during a PostBack to load the record.
|
|
|
|
If Me.RecordUniqueId IsNot Nothing AndAlso Me.RecordUniqueId.Trim <> "" Then
|
|
Me.DataSource = PersonRelativeTable.GetRecord(Me.RecordUniqueId, True)
|
|
|
|
Return
|
|
End If
|
|
|
|
' Since this is a row in the table, the data for this row is loaded by the
|
|
' LoadData method of the BasePersonRelativeTableControl when the data for the entire
|
|
' table is loaded.
|
|
|
|
Me.DataSource = New PersonRelativeRecord()
|
|
|
|
|
|
|
|
End Sub
|
|
|
|
' Populate the UI controls using the DataSource. To customize, override this method in PersonRelativeTableControlRow.
|
|
Public Overrides Sub DataBind()
|
|
' The DataBind method binds the user interface controls to the values
|
|
' from the database record. To do this, it calls the Set methods for
|
|
' each of the field displayed on the webpage. It is better to make
|
|
' changes in the Set methods, rather than making changes here.
|
|
|
|
MyBase.DataBind()
|
|
|
|
' Make sure that the DataSource is initialized.
|
|
If Me.DataSource Is Nothing Then
|
|
|
|
Return
|
|
End If
|
|
|
|
|
|
'LoadData for DataSource for chart and report if they exist
|
|
|
|
|
|
|
|
' Call the Set methods for each controls on the panel
|
|
|
|
SetFLastName()
|
|
SetFName()
|
|
SetMLastName()
|
|
SetMName()
|
|
SetMOrLastName()
|
|
SetPersonalId()
|
|
|
|
|
|
|
|
SetRAddress()
|
|
SetRAmphur()
|
|
SetRBirthDate()
|
|
SetRef1()
|
|
SetRefDate()
|
|
SetRelationId()
|
|
SetRFirstName()
|
|
SetRLastName()
|
|
SetRNationality()
|
|
SetROrigin()
|
|
SetROrLastName()
|
|
SetRPreName()
|
|
SetRProvince()
|
|
SetRReligion()
|
|
SetRRemark()
|
|
SetRStatus()
|
|
SetRStatusDate()
|
|
SetRStatusRef()
|
|
|
|
|
|
Me.IsNewRecord = True
|
|
|
|
If Me.DataSource.IsCreated Then
|
|
Me.IsNewRecord = False
|
|
|
|
Me.RecordUniqueId = Me.DataSource.GetID.ToXmlString()
|
|
End If
|
|
|
|
' Now load data for each record and table child UI controls.
|
|
' Ordering is important because child controls get
|
|
' their parent ids from their parent UI controls.
|
|
Dim shouldResetControl As Boolean = False
|
|
|
|
End Sub
|
|
|
|
|
|
Public Overridable Sub SetFLastName()
|
|
|
|
' If data was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.FLastName.ID) Then
|
|
|
|
Me.FLastName.Text = Me.PreviousUIData(Me.FLastName.ID).ToString()
|
|
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the FLastName TextBox on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.FLastName is the ASP:TextBox on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetFLastName()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.FLastNameSpecified Then
|
|
|
|
' If the FLastName is non-NULL, then format the value.
|
|
|
|
' The Format method will use the Display Format
|
|
Dim formattedValue As String = Me.DataSource.Format(PersonRelativeTable.FLastName)
|
|
|
|
Me.FLastName.Text = formattedValue
|
|
|
|
Else
|
|
|
|
' FLastName is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
|
|
Me.FLastName.Text = PersonRelativeTable.FLastName.Format(PersonRelativeTable.FLastName.DefaultValue)
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetFName()
|
|
|
|
' If data was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.FName.ID) Then
|
|
|
|
Me.FName.Text = Me.PreviousUIData(Me.FName.ID).ToString()
|
|
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the FName TextBox on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.FName is the ASP:TextBox on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetFName()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.FNameSpecified Then
|
|
|
|
' If the FName is non-NULL, then format the value.
|
|
|
|
' The Format method will use the Display Format
|
|
Dim formattedValue As String = Me.DataSource.Format(PersonRelativeTable.FName)
|
|
|
|
Me.FName.Text = formattedValue
|
|
|
|
Else
|
|
|
|
' FName is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
|
|
Me.FName.Text = PersonRelativeTable.FName.Format(PersonRelativeTable.FName.DefaultValue)
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetMLastName()
|
|
|
|
' If data was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.MLastName.ID) Then
|
|
|
|
Me.MLastName.Text = Me.PreviousUIData(Me.MLastName.ID).ToString()
|
|
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the MLastName TextBox on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.MLastName is the ASP:TextBox on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetMLastName()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.MLastNameSpecified Then
|
|
|
|
' If the MLastName is non-NULL, then format the value.
|
|
|
|
' The Format method will use the Display Format
|
|
Dim formattedValue As String = Me.DataSource.Format(PersonRelativeTable.MLastName)
|
|
|
|
Me.MLastName.Text = formattedValue
|
|
|
|
Else
|
|
|
|
' MLastName is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
|
|
Me.MLastName.Text = PersonRelativeTable.MLastName.Format(PersonRelativeTable.MLastName.DefaultValue)
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetMName()
|
|
|
|
' If data was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.MName.ID) Then
|
|
|
|
Me.MName.Text = Me.PreviousUIData(Me.MName.ID).ToString()
|
|
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the MName TextBox on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.MName is the ASP:TextBox on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetMName()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.MNameSpecified Then
|
|
|
|
' If the MName is non-NULL, then format the value.
|
|
|
|
' The Format method will use the Display Format
|
|
Dim formattedValue As String = Me.DataSource.Format(PersonRelativeTable.MName)
|
|
|
|
Me.MName.Text = formattedValue
|
|
|
|
Else
|
|
|
|
' MName is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
|
|
Me.MName.Text = PersonRelativeTable.MName.Format(PersonRelativeTable.MName.DefaultValue)
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetMOrLastName()
|
|
|
|
' If data was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.MOrLastName.ID) Then
|
|
|
|
Me.MOrLastName.Text = Me.PreviousUIData(Me.MOrLastName.ID).ToString()
|
|
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the MOrLastName TextBox on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.MOrLastName is the ASP:TextBox on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetMOrLastName()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.MOrLastNameSpecified Then
|
|
|
|
' If the MOrLastName is non-NULL, then format the value.
|
|
|
|
' The Format method will use the Display Format
|
|
Dim formattedValue As String = Me.DataSource.Format(PersonRelativeTable.MOrLastName)
|
|
|
|
Me.MOrLastName.Text = formattedValue
|
|
|
|
Else
|
|
|
|
' MOrLastName is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
|
|
Me.MOrLastName.Text = PersonRelativeTable.MOrLastName.Format(PersonRelativeTable.MOrLastName.DefaultValue)
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetPersonalId()
|
|
|
|
' If selection was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.PersonalId.ID) Then
|
|
If Me.PreviousUIData(Me.PersonalId.ID) Is Nothing
|
|
Me.PopulatePersonalIdDropDownList(Nothing, 100)
|
|
Else
|
|
Me.PopulatePersonalIdDropDownList(Me.PreviousUIData(Me.PersonalId.ID).ToString(), 100)
|
|
End If
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the PersonalId DropDownList on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.PersonalId is the ASP:DropDownList on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetPersonalId()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.PersonalIdSpecified Then
|
|
|
|
' If the PersonalId is non-NULL, then format the value.
|
|
' The Format method will return the Display Foreign Key As (DFKA) value
|
|
Me.PopulatePersonalIdDropDownList(Me.DataSource.PersonalId, 100)
|
|
|
|
Else
|
|
|
|
' PersonalId is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.IsCreated Then
|
|
Me.PopulatePersonalIdDropDownList(Nothing, 100)
|
|
Else
|
|
Me.PopulatePersonalIdDropDownList(PersonRelativeTable.PersonalId.DefaultValue, 100)
|
|
End If
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRAddress()
|
|
|
|
' If data was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.RAddress.ID) Then
|
|
|
|
Me.RAddress.Text = Me.PreviousUIData(Me.RAddress.ID).ToString()
|
|
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the RAddress TextBox on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.RAddress is the ASP:TextBox on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetRAddress()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.RAddressSpecified Then
|
|
|
|
' If the RAddress is non-NULL, then format the value.
|
|
|
|
' The Format method will use the Display Format
|
|
Dim formattedValue As String = Me.DataSource.Format(PersonRelativeTable.RAddress)
|
|
|
|
Me.RAddress.Text = formattedValue
|
|
|
|
Else
|
|
|
|
' RAddress is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
|
|
Me.RAddress.Text = PersonRelativeTable.RAddress.Format(PersonRelativeTable.RAddress.DefaultValue)
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRAmphur()
|
|
|
|
' If data was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.RAmphur.ID) Then
|
|
|
|
Me.RAmphur.Text = Me.PreviousUIData(Me.RAmphur.ID).ToString()
|
|
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the RAmphur TextBox on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.RAmphur is the ASP:TextBox on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetRAmphur()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.RAmphurSpecified Then
|
|
|
|
' If the RAmphur is non-NULL, then format the value.
|
|
|
|
' The Format method will use the Display Format
|
|
Dim formattedValue As String = Me.DataSource.Format(PersonRelativeTable.RAmphur)
|
|
|
|
Me.RAmphur.Text = formattedValue
|
|
|
|
Else
|
|
|
|
' RAmphur is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
|
|
Me.RAmphur.Text = PersonRelativeTable.RAmphur.Format(PersonRelativeTable.RAmphur.DefaultValue)
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRBirthDate()
|
|
|
|
' If data was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.RBirthDate.ID) Then
|
|
|
|
Me.RBirthDate.Text = Me.PreviousUIData(Me.RBirthDate.ID).ToString()
|
|
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the RBirthDate TextBox on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.RBirthDate is the ASP:TextBox on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetRBirthDate()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.RBirthDateSpecified Then
|
|
|
|
' If the RBirthDate is non-NULL, then format the value.
|
|
|
|
' The Format method will use the Display Format
|
|
Dim formattedValue As String = Me.DataSource.Format(PersonRelativeTable.RBirthDate, "d MMM yyyy")
|
|
|
|
Me.RBirthDate.Text = formattedValue
|
|
|
|
Else
|
|
|
|
' RBirthDate is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
|
|
Me.RBirthDate.Text = PersonRelativeTable.RBirthDate.Format(PersonRelativeTable.RBirthDate.DefaultValue, "d MMM yyyy")
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRef1()
|
|
|
|
' If data was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.Ref1.ID) Then
|
|
|
|
Me.Ref1.Text = Me.PreviousUIData(Me.Ref1.ID).ToString()
|
|
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the Ref TextBox on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.Ref1 is the ASP:TextBox on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetRef1()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.Ref0Specified Then
|
|
|
|
' If the Ref is non-NULL, then format the value.
|
|
|
|
' The Format method will use the Display Format
|
|
Dim formattedValue As String = Me.DataSource.Format(PersonRelativeTable.Ref0)
|
|
|
|
Me.Ref1.Text = formattedValue
|
|
|
|
Else
|
|
|
|
' Ref is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
|
|
Me.Ref1.Text = PersonRelativeTable.Ref0.Format(PersonRelativeTable.Ref0.DefaultValue)
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRefDate()
|
|
|
|
' If data was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.RefDate.ID) Then
|
|
|
|
Me.RefDate.Text = Me.PreviousUIData(Me.RefDate.ID).ToString()
|
|
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the RefDate TextBox on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.RefDate is the ASP:TextBox on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetRefDate()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.RefDateSpecified Then
|
|
|
|
' If the RefDate is non-NULL, then format the value.
|
|
|
|
' The Format method will use the Display Format
|
|
Dim formattedValue As String = Me.DataSource.Format(PersonRelativeTable.RefDate, "d MMM yyyy")
|
|
|
|
Me.RefDate.Text = formattedValue
|
|
|
|
Else
|
|
|
|
' RefDate is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
|
|
Me.RefDate.Text = PersonRelativeTable.RefDate.Format(PersonRelativeTable.RefDate.DefaultValue, "d MMM yyyy")
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRelationId()
|
|
|
|
' If selection was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.RelationId.ID) Then
|
|
If Me.PreviousUIData(Me.RelationId.ID) Is Nothing
|
|
Me.PopulateRelationIdDropDownList(Nothing, 100)
|
|
Else
|
|
Me.PopulateRelationIdDropDownList(Me.PreviousUIData(Me.RelationId.ID).ToString(), 100)
|
|
End If
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the RelationId DropDownList on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.RelationId is the ASP:DropDownList on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetRelationId()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.RelationIdSpecified Then
|
|
|
|
' If the RelationId is non-NULL, then format the value.
|
|
' The Format method will return the Display Foreign Key As (DFKA) value
|
|
Me.PopulateRelationIdDropDownList(Me.DataSource.RelationId.ToString(), 100)
|
|
|
|
Else
|
|
|
|
' RelationId is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.IsCreated Then
|
|
Me.PopulateRelationIdDropDownList(Nothing, 100)
|
|
Else
|
|
Me.PopulateRelationIdDropDownList(PersonRelativeTable.RelationId.DefaultValue, 100)
|
|
End If
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRFirstName()
|
|
|
|
' If data was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.RFirstName.ID) Then
|
|
|
|
Me.RFirstName.Text = Me.PreviousUIData(Me.RFirstName.ID).ToString()
|
|
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the RFirstName TextBox on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.RFirstName is the ASP:TextBox on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetRFirstName()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.RFirstNameSpecified Then
|
|
|
|
' If the RFirstName is non-NULL, then format the value.
|
|
|
|
' The Format method will use the Display Format
|
|
Dim formattedValue As String = Me.DataSource.Format(PersonRelativeTable.RFirstName)
|
|
|
|
Me.RFirstName.Text = formattedValue
|
|
|
|
Else
|
|
|
|
' RFirstName is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
|
|
Me.RFirstName.Text = PersonRelativeTable.RFirstName.Format(PersonRelativeTable.RFirstName.DefaultValue)
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRLastName()
|
|
|
|
' If data was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.RLastName.ID) Then
|
|
|
|
Me.RLastName.Text = Me.PreviousUIData(Me.RLastName.ID).ToString()
|
|
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the RLastName TextBox on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.RLastName is the ASP:TextBox on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetRLastName()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.RLastNameSpecified Then
|
|
|
|
' If the RLastName is non-NULL, then format the value.
|
|
|
|
' The Format method will use the Display Format
|
|
Dim formattedValue As String = Me.DataSource.Format(PersonRelativeTable.RLastName)
|
|
|
|
Me.RLastName.Text = formattedValue
|
|
|
|
Else
|
|
|
|
' RLastName is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
|
|
Me.RLastName.Text = PersonRelativeTable.RLastName.Format(PersonRelativeTable.RLastName.DefaultValue)
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRNationality()
|
|
|
|
' If data was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.RNationality.ID) Then
|
|
|
|
Me.RNationality.Text = Me.PreviousUIData(Me.RNationality.ID).ToString()
|
|
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the RNationality TextBox on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.RNationality is the ASP:TextBox on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetRNationality()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.RNationalitySpecified Then
|
|
|
|
' If the RNationality is non-NULL, then format the value.
|
|
|
|
' The Format method will use the Display Format
|
|
Dim formattedValue As String = Me.DataSource.Format(PersonRelativeTable.RNationality)
|
|
|
|
Me.RNationality.Text = formattedValue
|
|
|
|
Else
|
|
|
|
' RNationality is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
|
|
Me.RNationality.Text = PersonRelativeTable.RNationality.Format(PersonRelativeTable.RNationality.DefaultValue)
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetROrigin()
|
|
|
|
' If data was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.ROrigin.ID) Then
|
|
|
|
Me.ROrigin.Text = Me.PreviousUIData(Me.ROrigin.ID).ToString()
|
|
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the ROrigin TextBox on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.ROrigin is the ASP:TextBox on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetROrigin()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.ROriginSpecified Then
|
|
|
|
' If the ROrigin is non-NULL, then format the value.
|
|
|
|
' The Format method will use the Display Format
|
|
Dim formattedValue As String = Me.DataSource.Format(PersonRelativeTable.ROrigin)
|
|
|
|
Me.ROrigin.Text = formattedValue
|
|
|
|
Else
|
|
|
|
' ROrigin is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
|
|
Me.ROrigin.Text = PersonRelativeTable.ROrigin.Format(PersonRelativeTable.ROrigin.DefaultValue)
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetROrLastName()
|
|
|
|
' If data was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.ROrLastName.ID) Then
|
|
|
|
Me.ROrLastName.Text = Me.PreviousUIData(Me.ROrLastName.ID).ToString()
|
|
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the ROrLastName TextBox on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.ROrLastName is the ASP:TextBox on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetROrLastName()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.ROrLastNameSpecified Then
|
|
|
|
' If the ROrLastName is non-NULL, then format the value.
|
|
|
|
' The Format method will use the Display Format
|
|
Dim formattedValue As String = Me.DataSource.Format(PersonRelativeTable.ROrLastName)
|
|
|
|
Me.ROrLastName.Text = formattedValue
|
|
|
|
Else
|
|
|
|
' ROrLastName is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
|
|
Me.ROrLastName.Text = PersonRelativeTable.ROrLastName.Format(PersonRelativeTable.ROrLastName.DefaultValue)
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRPreName()
|
|
|
|
' If data was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.RPreName.ID) Then
|
|
|
|
Me.RPreName.Text = Me.PreviousUIData(Me.RPreName.ID).ToString()
|
|
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the RPreName TextBox on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.RPreName is the ASP:TextBox on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetRPreName()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.RPreNameSpecified Then
|
|
|
|
' If the RPreName is non-NULL, then format the value.
|
|
|
|
' The Format method will use the Display Format
|
|
Dim formattedValue As String = Me.DataSource.Format(PersonRelativeTable.RPreName)
|
|
|
|
Me.RPreName.Text = formattedValue
|
|
|
|
Else
|
|
|
|
' RPreName is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
|
|
Me.RPreName.Text = PersonRelativeTable.RPreName.Format(PersonRelativeTable.RPreName.DefaultValue)
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRProvince()
|
|
|
|
' If data was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.RProvince.ID) Then
|
|
|
|
Me.RProvince.Text = Me.PreviousUIData(Me.RProvince.ID).ToString()
|
|
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the RProvince TextBox on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.RProvince is the ASP:TextBox on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetRProvince()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.RProvinceSpecified Then
|
|
|
|
' If the RProvince is non-NULL, then format the value.
|
|
|
|
' The Format method will use the Display Format
|
|
Dim formattedValue As String = Me.DataSource.Format(PersonRelativeTable.RProvince)
|
|
|
|
Me.RProvince.Text = formattedValue
|
|
|
|
Else
|
|
|
|
' RProvince is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
|
|
Me.RProvince.Text = PersonRelativeTable.RProvince.Format(PersonRelativeTable.RProvince.DefaultValue)
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRReligion()
|
|
|
|
' If data was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.RReligion.ID) Then
|
|
|
|
Me.RReligion.Text = Me.PreviousUIData(Me.RReligion.ID).ToString()
|
|
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the RReligion TextBox on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.RReligion is the ASP:TextBox on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetRReligion()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.RReligionSpecified Then
|
|
|
|
' If the RReligion is non-NULL, then format the value.
|
|
|
|
' The Format method will use the Display Format
|
|
Dim formattedValue As String = Me.DataSource.Format(PersonRelativeTable.RReligion)
|
|
|
|
Me.RReligion.Text = formattedValue
|
|
|
|
Else
|
|
|
|
' RReligion is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
|
|
Me.RReligion.Text = PersonRelativeTable.RReligion.Format(PersonRelativeTable.RReligion.DefaultValue)
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRRemark()
|
|
|
|
' If data was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.RRemark.ID) Then
|
|
|
|
Me.RRemark.Text = Me.PreviousUIData(Me.RRemark.ID).ToString()
|
|
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the RRemark TextBox on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.RRemark is the ASP:TextBox on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetRRemark()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.RRemarkSpecified Then
|
|
|
|
' If the RRemark is non-NULL, then format the value.
|
|
|
|
' The Format method will use the Display Format
|
|
Dim formattedValue As String = Me.DataSource.Format(PersonRelativeTable.RRemark)
|
|
|
|
Me.RRemark.Text = formattedValue
|
|
|
|
Else
|
|
|
|
' RRemark is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
|
|
Me.RRemark.Text = PersonRelativeTable.RRemark.Format(PersonRelativeTable.RRemark.DefaultValue)
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRStatus()
|
|
|
|
' If selection was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.RStatus.ID) Then
|
|
If Me.PreviousUIData(Me.RStatus.ID) Is Nothing
|
|
Me.PopulateRStatusDropDownList(Nothing, 100)
|
|
Else
|
|
Me.PopulateRStatusDropDownList(Me.PreviousUIData(Me.RStatus.ID).ToString(), 100)
|
|
End If
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the RStatus DropDownList on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.RStatus is the ASP:DropDownList on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetRStatus()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.RStatusSpecified Then
|
|
|
|
' If the RStatus is non-NULL, then format the value.
|
|
' The Format method will return the Display Foreign Key As (DFKA) value
|
|
Me.PopulateRStatusDropDownList(Me.DataSource.RStatus.ToString(), 100)
|
|
|
|
Else
|
|
|
|
' RStatus is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.IsCreated Then
|
|
Me.PopulateRStatusDropDownList(Nothing, 100)
|
|
Else
|
|
Me.PopulateRStatusDropDownList(PersonRelativeTable.RStatus.DefaultValue, 100)
|
|
End If
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRStatusDate()
|
|
|
|
' If data was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.RStatusDate.ID) Then
|
|
|
|
Me.RStatusDate.Text = Me.PreviousUIData(Me.RStatusDate.ID).ToString()
|
|
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the RStatusDate TextBox on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.RStatusDate is the ASP:TextBox on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetRStatusDate()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.RStatusDateSpecified Then
|
|
|
|
' If the RStatusDate is non-NULL, then format the value.
|
|
|
|
' The Format method will use the Display Format
|
|
Dim formattedValue As String = Me.DataSource.Format(PersonRelativeTable.RStatusDate, "d MMM yyyy")
|
|
|
|
Me.RStatusDate.Text = formattedValue
|
|
|
|
Else
|
|
|
|
' RStatusDate is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
|
|
Me.RStatusDate.Text = PersonRelativeTable.RStatusDate.Format(PersonRelativeTable.RStatusDate.DefaultValue, "d MMM yyyy")
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRStatusRef()
|
|
|
|
' If data was retrieved from UI previously, restore it
|
|
If Me.PreviousUIData.ContainsKey(Me.RStatusRef.ID) Then
|
|
|
|
Me.RStatusRef.Text = Me.PreviousUIData(Me.RStatusRef.ID).ToString()
|
|
|
|
Return
|
|
End If
|
|
|
|
|
|
' Set the RStatusRef TextBox on the webpage with value from the
|
|
' PersonRelative database record.
|
|
|
|
' Me.DataSource is the PersonRelative record retrieved from the database.
|
|
' Me.RStatusRef is the ASP:TextBox on the webpage.
|
|
|
|
' You can modify this method directly, or replace it with a call to
|
|
' MyBase.SetRStatusRef()
|
|
' and add your own code before or after the call to the MyBase function.
|
|
|
|
|
|
|
|
If Me.DataSource IsNot Nothing AndAlso Me.DataSource.RStatusRefSpecified Then
|
|
|
|
' If the RStatusRef is non-NULL, then format the value.
|
|
|
|
' The Format method will use the Display Format
|
|
Dim formattedValue As String = Me.DataSource.Format(PersonRelativeTable.RStatusRef)
|
|
|
|
Me.RStatusRef.Text = formattedValue
|
|
|
|
Else
|
|
|
|
' RStatusRef is NULL in the database, so use the Default Value.
|
|
' Default Value could also be NULL.
|
|
|
|
Me.RStatusRef.Text = PersonRelativeTable.RStatusRef.Format(PersonRelativeTable.RStatusRef.DefaultValue)
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
|
|
Public EvaluateFormulaDelegate As BaseClasses.Data.DataSource.EvaluateFormulaDelegate = New BaseClasses.Data.DataSource.EvaluateFormulaDelegate(AddressOf Me.EvaluateFormula)
|
|
|
|
Public Overridable Function EvaluateFormula(ByVal formula As String, ByVal dataSourceForEvaluate As BaseClasses.Data.BaseRecord, ByVal format As String, ByVal variables As System.Collections.Generic.IDictionary(Of String, Object), ByVal includeDS As Boolean, ByVal e As FormulaEvaluator) As String
|
|
If e Is Nothing Then
|
|
e = New FormulaEvaluator()
|
|
End If
|
|
|
|
e.Variables.Clear()
|
|
|
|
|
|
' add variables for formula evaluation
|
|
If variables IsNot Nothing Then
|
|
Dim enumerator As System.Collections.Generic.IEnumerator(Of System.Collections.Generic.KeyValuePair(Of String, Object)) = variables.GetEnumerator()
|
|
While enumerator.MoveNext()
|
|
e.Variables.Add(enumerator.Current.Key, enumerator.Current.Value)
|
|
End While
|
|
End If
|
|
|
|
If includeDS
|
|
|
|
End IF
|
|
|
|
|
|
' Other variables referred to in the formula are expected to be
|
|
' properties of the DataSource. For example, referring to
|
|
' UnitPrice as a variable will refer to DataSource.UnitPrice
|
|
If dataSourceForEvaluate Is Nothing Then
|
|
|
|
e.DataSource = Me.DataSource
|
|
|
|
Else
|
|
e.DataSource = dataSourceForEvaluate
|
|
End If
|
|
|
|
' Define the calling control. This is used to add other
|
|
' related table and record controls as variables.
|
|
e.CallingControl = Me
|
|
|
|
Dim resultObj As Object = e.Evaluate(formula)
|
|
If resultObj Is Nothing Then
|
|
Return ""
|
|
End If
|
|
|
|
If Not String.IsNullOrEmpty(format) AndAlso (String.IsNullOrEmpty(formula) OrElse formula.IndexOf("Format(") < 0) Then
|
|
Return FormulaUtils.Format(resultObj, format)
|
|
Else
|
|
Return resultObj.ToString()
|
|
End If
|
|
End Function
|
|
|
|
Public Overridable Function EvaluateFormula(ByVal formula As String, ByVal dataSourceForEvaluate as BaseClasses.Data.BaseRecord, ByVal format as String, ByVal variables As System.Collections.Generic.IDictionary(Of String, Object), ByVal includeDS As Boolean) As String
|
|
Return EvaluateFormula(formula, dataSourceForEvaluate, format,variables ,includeDS, Nothing)
|
|
End Function
|
|
|
|
|
|
Public Overridable Function EvaluateFormula(ByVal formula As String, ByVal dataSourceForEvaluate As BaseClasses.Data.BaseRecord, ByVal format As String, ByVal variables As System.Collections.Generic.IDictionary(Of String, Object)) As String
|
|
Return EvaluateFormula(formula, dataSourceForEvaluate, format, variables ,True, Nothing)
|
|
End Function
|
|
|
|
Public Overridable Function EvaluateFormula(ByVal formula As String, ByVal dataSourceForEvaluate As BaseClasses.Data.BaseRecord, ByVal format As String) As String
|
|
Return Me.EvaluateFormula(formula, dataSourceForEvaluate, format, Nothing, True, Nothing)
|
|
End Function
|
|
|
|
Public Overridable Function EvaluateFormula(ByVal formula As String, ByVal dataSourceForEvaluate As BaseClasses.Data.BaseRecord, ByVal variables As System.Collections.Generic.IDictionary(Of String, Object), ByVal e as FormulaEvaluator) As String
|
|
Return Me.EvaluateFormula(formula, dataSourceForEvaluate, Nothing, variables, True, e)
|
|
End Function
|
|
|
|
Public Overridable Function EvaluateFormula(ByVal formula As String, ByVal dataSourceForEvaluate As BaseClasses.Data.BaseRecord) As String
|
|
Return Me.EvaluateFormula(formula, dataSourceForEvaluate, Nothing, Nothing, True, Nothing)
|
|
End Function
|
|
|
|
Public Overridable Function EvaluateFormula(ByVal formula As String, ByVal includeDS as Boolean) As String
|
|
Return Me.EvaluateFormula(formula, Nothing, Nothing, Nothing, includeDS, Nothing)
|
|
End Function
|
|
|
|
Public Overridable Function EvaluateFormula(ByVal formula As String) As String
|
|
Return Me.EvaluateFormula(formula, Nothing, Nothing, Nothing, True, Nothing)
|
|
End Function
|
|
|
|
|
|
Public Overridable Sub RegisterPostback()
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
' To customize, override this method in PersonRelativeTableControlRow.
|
|
Public Overridable Sub SaveData()
|
|
' Saves the associated record in the database.
|
|
' SaveData calls Validate and Get methods - so it may be more appropriate to
|
|
' customize those methods.
|
|
|
|
' 1. Load the existing record from the database. Since we save the entire record, this ensures
|
|
' that fields that are not displayed are also properly initialized.
|
|
Me.LoadData()
|
|
|
|
|
|
' 2. Perform any custom validation.
|
|
Me.Validate()
|
|
|
|
|
|
' 3. Set the values in the record with data from UI controls.
|
|
' This calls the Get() method for each of the user interface controls.
|
|
Me.GetUIData()
|
|
|
|
' 4. Save in the database.
|
|
' We should not save the record if the data did not change. This
|
|
' will save a database hit and avoid triggering any database triggers.
|
|
|
|
If Me.DataSource.IsAnyValueChanged Then
|
|
' Save record to database but do not commit yet.
|
|
' Auto generated ids are available after saving for use by child (dependent) records.
|
|
Me.DataSource.Save()
|
|
|
|
DirectCast(GetParentControlObject(Me, "PersonRelativeTableControl"), PersonRelativeTableControl).DataChanged = True
|
|
DirectCast(GetParentControlObject(Me, "PersonRelativeTableControl"), PersonRelativeTableControl).ResetData = True
|
|
End If
|
|
|
|
|
|
' update session or cookie by formula
|
|
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
Me.ResetData = True
|
|
|
|
' For Master-Detail relationships, save data on the Detail table(s)
|
|
|
|
End Sub
|
|
|
|
' To customize, override this method in PersonRelativeTableControlRow.
|
|
Public Overridable Sub GetUIData()
|
|
' The GetUIData method retrieves the updated values from the user interface
|
|
' controls into a database record in preparation for saving or updating.
|
|
' To do this, it calls the Get methods for each of the field displayed on
|
|
' the webpage. It is better to make changes in the Get methods, rather
|
|
' than making changes here.
|
|
|
|
' Call the Get methods for each of the user interface controls.
|
|
|
|
GetFLastName()
|
|
GetFName()
|
|
GetMLastName()
|
|
GetMName()
|
|
GetMOrLastName()
|
|
GetPersonalId()
|
|
GetRAddress()
|
|
GetRAmphur()
|
|
GetRBirthDate()
|
|
GetRef1()
|
|
GetRefDate()
|
|
GetRelationId()
|
|
GetRFirstName()
|
|
GetRLastName()
|
|
GetRNationality()
|
|
GetROrigin()
|
|
GetROrLastName()
|
|
GetRPreName()
|
|
GetRProvince()
|
|
GetRReligion()
|
|
GetRRemark()
|
|
GetRStatus()
|
|
GetRStatusDate()
|
|
GetRStatusRef()
|
|
End Sub
|
|
|
|
|
|
Public Overridable Sub GetFLastName()
|
|
|
|
' Retrieve the value entered by the user on the FLastName ASP:TextBox, and
|
|
' save it into the FLastName field in DataSource PersonRelative record.
|
|
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
'Save the value to data source
|
|
Me.DataSource.Parse(Me.FLastName.Text, PersonRelativeTable.FLastName)
|
|
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub GetFName()
|
|
|
|
' Retrieve the value entered by the user on the FName ASP:TextBox, and
|
|
' save it into the FName field in DataSource PersonRelative record.
|
|
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
'Save the value to data source
|
|
Me.DataSource.Parse(Me.FName.Text, PersonRelativeTable.FName)
|
|
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub GetMLastName()
|
|
|
|
' Retrieve the value entered by the user on the MLastName ASP:TextBox, and
|
|
' save it into the MLastName field in DataSource PersonRelative record.
|
|
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
'Save the value to data source
|
|
Me.DataSource.Parse(Me.MLastName.Text, PersonRelativeTable.MLastName)
|
|
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub GetMName()
|
|
|
|
' Retrieve the value entered by the user on the MName ASP:TextBox, and
|
|
' save it into the MName field in DataSource PersonRelative record.
|
|
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
'Save the value to data source
|
|
Me.DataSource.Parse(Me.MName.Text, PersonRelativeTable.MName)
|
|
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub GetMOrLastName()
|
|
|
|
' Retrieve the value entered by the user on the MOrLastName ASP:TextBox, and
|
|
' save it into the MOrLastName field in DataSource PersonRelative record.
|
|
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
'Save the value to data source
|
|
Me.DataSource.Parse(Me.MOrLastName.Text, PersonRelativeTable.MOrLastName)
|
|
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub GetPersonalId()
|
|
|
|
' Retrieve the value entered by the user on the PersonalId ASP:DropDownList, and
|
|
' save it into the PersonalId field in DataSource PersonRelative record.
|
|
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
Me.DataSource.Parse(GetValueSelectedPageRequest(Me.PersonalId), PersonRelativeTable.PersonalId)
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub GetRAddress()
|
|
|
|
' Retrieve the value entered by the user on the RAddress ASP:TextBox, and
|
|
' save it into the RAddress field in DataSource PersonRelative record.
|
|
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
'Save the value to data source
|
|
Me.DataSource.Parse(Me.RAddress.Text, PersonRelativeTable.RAddress)
|
|
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub GetRAmphur()
|
|
|
|
' Retrieve the value entered by the user on the RAmphur ASP:TextBox, and
|
|
' save it into the RAmphur field in DataSource PersonRelative record.
|
|
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
'Save the value to data source
|
|
Me.DataSource.Parse(Me.RAmphur.Text, PersonRelativeTable.RAmphur)
|
|
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub GetRBirthDate()
|
|
|
|
' Retrieve the value entered by the user on the RBirthDate ASP:TextBox, and
|
|
' save it into the RBirthDate field in DataSource PersonRelative record.
|
|
' Parse will also validate the date to ensure it is of the proper format
|
|
' and a valid date. The format is verified based on the current culture
|
|
' settings including the order of month, day and year and the separator character.
|
|
' Parse throws an exception if the date is invalid.
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
'Save the value to data source
|
|
Me.DataSource.Parse(Me.RBirthDate.Text, PersonRelativeTable.RBirthDate)
|
|
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub GetRef1()
|
|
|
|
' Retrieve the value entered by the user on the Ref ASP:TextBox, and
|
|
' save it into the Ref field in DataSource PersonRelative record.
|
|
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
'Save the value to data source
|
|
Me.DataSource.Parse(Me.Ref1.Text, PersonRelativeTable.Ref0)
|
|
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub GetRefDate()
|
|
|
|
' Retrieve the value entered by the user on the RefDate ASP:TextBox, and
|
|
' save it into the RefDate field in DataSource PersonRelative record.
|
|
' Parse will also validate the date to ensure it is of the proper format
|
|
' and a valid date. The format is verified based on the current culture
|
|
' settings including the order of month, day and year and the separator character.
|
|
' Parse throws an exception if the date is invalid.
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
'Save the value to data source
|
|
Me.DataSource.Parse(Me.RefDate.Text, PersonRelativeTable.RefDate)
|
|
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub GetRelationId()
|
|
|
|
' Retrieve the value entered by the user on the RelationId ASP:DropDownList, and
|
|
' save it into the RelationId field in DataSource PersonRelative record.
|
|
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
Me.DataSource.Parse(GetValueSelectedPageRequest(Me.RelationId), PersonRelativeTable.RelationId)
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub GetRFirstName()
|
|
|
|
' Retrieve the value entered by the user on the RFirstName ASP:TextBox, and
|
|
' save it into the RFirstName field in DataSource PersonRelative record.
|
|
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
'Save the value to data source
|
|
Me.DataSource.Parse(Me.RFirstName.Text, PersonRelativeTable.RFirstName)
|
|
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub GetRLastName()
|
|
|
|
' Retrieve the value entered by the user on the RLastName ASP:TextBox, and
|
|
' save it into the RLastName field in DataSource PersonRelative record.
|
|
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
'Save the value to data source
|
|
Me.DataSource.Parse(Me.RLastName.Text, PersonRelativeTable.RLastName)
|
|
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub GetRNationality()
|
|
|
|
' Retrieve the value entered by the user on the RNationality ASP:TextBox, and
|
|
' save it into the RNationality field in DataSource PersonRelative record.
|
|
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
'Save the value to data source
|
|
Me.DataSource.Parse(Me.RNationality.Text, PersonRelativeTable.RNationality)
|
|
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub GetROrigin()
|
|
|
|
' Retrieve the value entered by the user on the ROrigin ASP:TextBox, and
|
|
' save it into the ROrigin field in DataSource PersonRelative record.
|
|
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
'Save the value to data source
|
|
Me.DataSource.Parse(Me.ROrigin.Text, PersonRelativeTable.ROrigin)
|
|
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub GetROrLastName()
|
|
|
|
' Retrieve the value entered by the user on the ROrLastName ASP:TextBox, and
|
|
' save it into the ROrLastName field in DataSource PersonRelative record.
|
|
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
'Save the value to data source
|
|
Me.DataSource.Parse(Me.ROrLastName.Text, PersonRelativeTable.ROrLastName)
|
|
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub GetRPreName()
|
|
|
|
' Retrieve the value entered by the user on the RPreName ASP:TextBox, and
|
|
' save it into the RPreName field in DataSource PersonRelative record.
|
|
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
'Save the value to data source
|
|
Me.DataSource.Parse(Me.RPreName.Text, PersonRelativeTable.RPreName)
|
|
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub GetRProvince()
|
|
|
|
' Retrieve the value entered by the user on the RProvince ASP:TextBox, and
|
|
' save it into the RProvince field in DataSource PersonRelative record.
|
|
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
'Save the value to data source
|
|
Me.DataSource.Parse(Me.RProvince.Text, PersonRelativeTable.RProvince)
|
|
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub GetRReligion()
|
|
|
|
' Retrieve the value entered by the user on the RReligion ASP:TextBox, and
|
|
' save it into the RReligion field in DataSource PersonRelative record.
|
|
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
'Save the value to data source
|
|
Me.DataSource.Parse(Me.RReligion.Text, PersonRelativeTable.RReligion)
|
|
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub GetRRemark()
|
|
|
|
' Retrieve the value entered by the user on the RRemark ASP:TextBox, and
|
|
' save it into the RRemark field in DataSource PersonRelative record.
|
|
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
'Save the value to data source
|
|
Me.DataSource.Parse(Me.RRemark.Text, PersonRelativeTable.RRemark)
|
|
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub GetRStatus()
|
|
|
|
' Retrieve the value entered by the user on the RStatus ASP:DropDownList, and
|
|
' save it into the RStatus field in DataSource PersonRelative record.
|
|
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
Me.DataSource.Parse(GetValueSelectedPageRequest(Me.RStatus), PersonRelativeTable.RStatus)
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub GetRStatusDate()
|
|
|
|
' Retrieve the value entered by the user on the RStatusDate ASP:TextBox, and
|
|
' save it into the RStatusDate field in DataSource PersonRelative record.
|
|
' Parse will also validate the date to ensure it is of the proper format
|
|
' and a valid date. The format is verified based on the current culture
|
|
' settings including the order of month, day and year and the separator character.
|
|
' Parse throws an exception if the date is invalid.
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
'Save the value to data source
|
|
Me.DataSource.Parse(Me.RStatusDate.Text, PersonRelativeTable.RStatusDate)
|
|
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub GetRStatusRef()
|
|
|
|
' Retrieve the value entered by the user on the RStatusRef ASP:TextBox, and
|
|
' save it into the RStatusRef field in DataSource PersonRelative record.
|
|
|
|
' Custom validation should be performed in Validate, not here.
|
|
|
|
'Save the value to data source
|
|
Me.DataSource.Parse(Me.RStatusRef.Text, PersonRelativeTable.RStatusRef)
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
' To customize, override this method in PersonRelativeTableControlRow.
|
|
|
|
Public Overridable Function CreateWhereClause() As WhereClause
|
|
|
|
Return Nothing
|
|
|
|
End Function
|
|
|
|
|
|
|
|
' To customize, override this method in PersonRelativeTableControlRow.
|
|
Public Overridable Sub Validate()
|
|
' Add custom validation for any control within this panel.
|
|
' Example. If you have a State ASP:Textbox control
|
|
' If Me.State.Text <> "CA" Then
|
|
' Throw New Exception("State must be CA (California).")
|
|
' End If
|
|
|
|
' The Validate method is common across all controls within
|
|
' this panel so you can validate multiple fields, but report
|
|
' one error message.
|
|
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub Delete()
|
|
|
|
If Me.IsNewRecord() Then
|
|
Return
|
|
End If
|
|
|
|
Dim pkValue As KeyValue = KeyValue.XmlToKey(Me.RecordUniqueId)
|
|
PersonRelativeTable.DeleteRecord(pkValue)
|
|
|
|
DirectCast(GetParentControlObject(Me, "PersonRelativeTableControl"), PersonRelativeTableControl).DataChanged = True
|
|
DirectCast(GetParentControlObject(Me, "PersonRelativeTableControl"), PersonRelativeTableControl).ResetData = True
|
|
End Sub
|
|
|
|
Protected Overridable Sub Control_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.PreRender
|
|
' PreRender event is raised just before page is being displayed.
|
|
Try
|
|
DbUtils.StartTransaction()
|
|
Me.RegisterPostback()
|
|
|
|
If Not Me.Page.ErrorOnPage AndAlso (Me.Page.IsPageRefresh OrElse Me.DataChanged OrElse Me.ResetData) Then
|
|
|
|
|
|
' Re-load the data and update the web page if necessary.
|
|
' This is typically done during a postback (filter, search button, sort, pagination button).
|
|
' In each of the other click handlers, simply set DataChanged to True to reload the data.
|
|
Me.LoadData()
|
|
Me.DataBind()
|
|
End If
|
|
|
|
|
|
Catch ex As Exception
|
|
Utils.MiscUtils.RegisterJScriptAlert(Me, "BUTTON_CLICK_MESSAGE", ex.Message)
|
|
Finally
|
|
DbUtils.EndTransaction()
|
|
End Try
|
|
End Sub
|
|
|
|
|
|
Protected Overrides Sub SaveControlsToSession()
|
|
MyBase.SaveControlsToSession()
|
|
|
|
|
|
'Save pagination state to session.
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
Protected Overrides Sub ClearControlsFromSession()
|
|
MyBase.ClearControlsFromSession()
|
|
|
|
|
|
|
|
' Clear pagination state from session.
|
|
|
|
End Sub
|
|
|
|
Protected Overrides Sub LoadViewState(ByVal savedState As Object)
|
|
MyBase.LoadViewState(savedState)
|
|
Dim isNewRecord As String = CType(ViewState("IsNewRecord"), String)
|
|
If Not isNewRecord Is Nothing AndAlso isNewRecord.Trim <> "" Then
|
|
Me.IsNewRecord = Boolean.Parse(isNewRecord)
|
|
End If
|
|
|
|
Dim myCheckSum As String = CType(ViewState("CheckSum"), String)
|
|
If Not myCheckSum Is Nothing AndAlso myCheckSum.Trim <> "" Then
|
|
Me.CheckSum = myCheckSum
|
|
End If
|
|
|
|
|
|
' Load view state for pagination control.
|
|
|
|
End Sub
|
|
|
|
Protected Overrides Function SaveViewState() As Object
|
|
ViewState("IsNewRecord") = Me.IsNewRecord.ToString()
|
|
ViewState("CheckSum") = Me.CheckSum
|
|
|
|
|
|
' Load view state for pagination control.
|
|
|
|
Return MyBase.SaveViewState()
|
|
End Function
|
|
|
|
|
|
|
|
Public Overridable Function CreateWhereClause_PersonalIdDropDownList() As WhereClause
|
|
' By default, we simply return a new WhereClause.
|
|
' Add additional where clauses to restrict the items shown in the dropdown list.
|
|
|
|
' This WhereClause is for the PersonalId table.
|
|
' Examples:
|
|
' wc.iAND(PersonalIdTable.PersonalName, BaseFilter.ComparisonOperator.EqualsTo, "XYZ")
|
|
' wc.iAND(PersonalIdTable.Active, BaseFilter.ComparisonOperator.EqualsTo, "1")
|
|
|
|
Dim wc As WhereClause = New WhereClause()
|
|
Return wc
|
|
|
|
End Function
|
|
|
|
|
|
|
|
Public Overridable Function CreateWhereClause_RelationIdDropDownList() As WhereClause
|
|
' By default, we simply return a new WhereClause.
|
|
' Add additional where clauses to restrict the items shown in the dropdown list.
|
|
|
|
' This WhereClause is for the relation table.
|
|
' Examples:
|
|
' wc.iAND(RelationTable.Relation, BaseFilter.ComparisonOperator.EqualsTo, "XYZ")
|
|
' wc.iAND(RelationTable.Active, BaseFilter.ComparisonOperator.EqualsTo, "1")
|
|
|
|
Dim wc As WhereClause = New WhereClause()
|
|
Return wc
|
|
|
|
End Function
|
|
|
|
|
|
|
|
Public Overridable Function CreateWhereClause_RStatusDropDownList() As WhereClause
|
|
' By default, we simply return a new WhereClause.
|
|
' Add additional where clauses to restrict the items shown in the dropdown list.
|
|
|
|
' This WhereClause is for the RStatus table.
|
|
' Examples:
|
|
' wc.iAND(RStatusTable.RStatus, BaseFilter.ComparisonOperator.EqualsTo, "XYZ")
|
|
' wc.iAND(RStatusTable.Active, BaseFilter.ComparisonOperator.EqualsTo, "1")
|
|
|
|
Dim wc As WhereClause = New WhereClause()
|
|
Return wc
|
|
|
|
End Function
|
|
|
|
|
|
' Fill the PersonalId list.
|
|
Protected Overridable Sub PopulatePersonalIdDropDownList( _
|
|
ByVal selectedValue As String, _
|
|
ByVal maxItems As Integer)
|
|
|
|
Me.PersonalId.Items.Clear()
|
|
|
|
|
|
' 1. Setup the static list items
|
|
|
|
' Add the Please Select item.
|
|
Me.PersonalId.Items.Insert(0, new ListItem(Me.Page.GetResourceValue("Txt:PleaseSelect", "Persons"), "--PLEASE_SELECT--"))
|
|
|
|
' 2. Set up the WHERE and the ORDER BY clause by calling the CreateWhereClause_PersonalIdDropDownList function.
|
|
' It is better to customize the where clause there.
|
|
|
|
Dim wc As WhereClause = CreateWhereClause_PersonalIdDropDownList()
|
|
' Create the ORDER BY clause to sort based on the displayed value.
|
|
|
|
|
|
Dim orderBy As OrderBy = New OrderBy(false, false)
|
|
orderBy.Add(PersonalIdTable.PersonalName, OrderByItem.OrderDir.Asc)
|
|
|
|
Dim variables As System.Collections.Generic.IDictionary(Of String, Object) = New System.Collections.Generic.Dictionary(Of String, Object)
|
|
|
|
' 3. Read a total of maxItems from the database and insert them
|
|
Dim itemValues() As PersonalIdRecord = Nothing
|
|
Dim evaluator As New FormulaEvaluator
|
|
If wc.RunQuery
|
|
Dim counter As Integer = 0
|
|
Dim pageNum As Integer = 0
|
|
Dim listDuplicates As New ArrayList()
|
|
|
|
Do
|
|
itemValues = PersonalIdTable.GetRecords(wc, orderBy, pageNum, maxItems)
|
|
For each itemValue As PersonalIdRecord In itemValues
|
|
' Create the item and add to the list.
|
|
Dim cvalue As String = Nothing
|
|
Dim fvalue As String = Nothing
|
|
If itemValue.PersonalIdSpecified Then
|
|
cvalue = itemValue.PersonalId.ToString()
|
|
|
|
If counter < maxItems AndAlso Me.PersonalId.Items.FindByValue(cvalue) Is Nothing Then
|
|
|
|
Dim _isExpandableNonCompositeForeignKey As Boolean = PersonRelativeTable.Instance.TableDefinition.IsExpandableNonCompositeForeignKey(PersonRelativeTable.PersonalId)
|
|
If _isExpandableNonCompositeForeignKey AndAlso PersonRelativeTable.PersonalId.IsApplyDisplayAs Then
|
|
fvalue = PersonRelativeTable.GetDFKA(itemValue, PersonRelativeTable.PersonalId)
|
|
End If
|
|
If (Not _isExpandableNonCompositeForeignKey) Or (String.IsNullOrEmpty(fvalue)) Then
|
|
fvalue = itemValue.Format(PersonalIdTable.PersonalName)
|
|
End If
|
|
|
|
If fvalue Is Nothing OrElse fvalue.Trim() = "" Then fvalue = cvalue
|
|
|
|
If (IsNothing(fvalue)) Then
|
|
fvalue = ""
|
|
End If
|
|
|
|
fvalue = fvalue.Trim()
|
|
|
|
If ( fvalue.Length > 50 ) Then
|
|
fvalue = fvalue.Substring(0, 50) & "..."
|
|
End If
|
|
|
|
Dim dupItem As ListItem = Me.PersonalId.Items.FindByText(fvalue)
|
|
|
|
If Not IsNothing(dupItem) Then
|
|
listDuplicates.Add(fvalue)
|
|
dupItem.Text = fvalue & " (ID " & dupItem.Value.Substring(0, Math.Min(dupItem.Value.Length,38)) & ")"
|
|
End If
|
|
|
|
Dim newItem As ListItem = New ListItem(fvalue, cvalue)
|
|
Me.PersonalId.Items.Add(newItem)
|
|
|
|
If listDuplicates.Contains(fvalue) Then
|
|
newItem.Text = fvalue & " (ID " & cvalue.Substring(0, Math.Min(cvalue.Length,38)) & ")"
|
|
End If
|
|
|
|
counter += 1
|
|
End If
|
|
End If
|
|
Next
|
|
pageNum += 1
|
|
Loop While (itemValues.Length = maxItems AndAlso counter < maxItems)
|
|
End If
|
|
|
|
|
|
' 4. Set the selected value (insert if not already present).
|
|
|
|
If Not selectedValue Is Nothing AndAlso _
|
|
selectedValue.Trim <> "" AndAlso _
|
|
Not SetSelectedValue(Me.PersonalId, selectedValue) AndAlso _
|
|
Not SetSelectedDisplayText(Me.PersonalId, selectedValue)Then
|
|
|
|
' construct a whereclause to query a record with PersonalId.PersonalId = selectedValue
|
|
Dim filter2 As CompoundFilter = New CompoundFilter(CompoundFilter.CompoundingOperators.And_Operator, Nothing)
|
|
Dim whereClause2 As WhereClause = New WhereClause()
|
|
filter2.AddFilter(New BaseClasses.Data.ColumnValueFilter(PersonalIdTable.PersonalId, selectedValue, BaseClasses.Data.BaseFilter.ComparisonOperator.EqualsTo, False))
|
|
whereClause2.AddFilter(filter2, CompoundFilter.CompoundingOperators.And_Operator)
|
|
|
|
Try
|
|
' Execute the query
|
|
Dim rc() As PersonalIdRecord = PersonalIdTable.GetRecords(whereClause2, New OrderBy(False, False), 0, 1)
|
|
Dim vars As System.Collections.Generic.IDictionary(Of String, Object) = New System.Collections.Generic.Dictionary(Of String, Object)
|
|
' if find a record, add it to the dropdown and set it as selected item
|
|
If rc IsNot Nothing AndAlso rc.Length = 1 Then
|
|
Dim itemValue As PersonalIdRecord = DirectCast(rc(0), PersonalIdRecord)
|
|
' Create the item and add to the list.
|
|
Dim cvalue As String = Nothing
|
|
Dim fvalue As String = Nothing
|
|
If itemValue.PersonalIdSpecified Then
|
|
cvalue = itemValue.PersonalId.ToString()
|
|
Dim _isExpandableNonCompositeForeignKey As Boolean = PersonRelativeTable.Instance.TableDefinition.IsExpandableNonCompositeForeignKey(PersonRelativeTable.PersonalId)
|
|
If _isExpandableNonCompositeForeignKey AndAlso PersonRelativeTable.PersonalId.IsApplyDisplayAs Then
|
|
fvalue = PersonRelativeTable.GetDFKA(itemValue, PersonRelativeTable.PersonalId)
|
|
End If
|
|
If (Not _isExpandableNonCompositeForeignKey) Or (String.IsNullOrEmpty(fvalue)) Then
|
|
fvalue = itemValue.Format(PersonalIdTable.PersonalName)
|
|
End If
|
|
|
|
If fvalue Is Nothing OrElse fvalue.Trim() = "" Then fvalue = cvalue
|
|
Dim newItem As New ListItem(fvalue, cvalue)
|
|
Me.PersonalId.Items.Add(newItem)
|
|
SetSelectedValue(Me.PersonalId, selectedValue)
|
|
End If
|
|
End If
|
|
Catch
|
|
End Try
|
|
|
|
End If
|
|
|
|
|
|
End Sub
|
|
|
|
' Fill the RelationId list.
|
|
Protected Overridable Sub PopulateRelationIdDropDownList( _
|
|
ByVal selectedValue As String, _
|
|
ByVal maxItems As Integer)
|
|
|
|
Me.RelationId.Items.Clear()
|
|
|
|
|
|
' 1. Setup the static list items
|
|
|
|
' Add the Please Select item.
|
|
Me.RelationId.Items.Insert(0, new ListItem(Me.Page.GetResourceValue("Txt:PleaseSelect", "Persons"), "--PLEASE_SELECT--"))
|
|
|
|
' 2. Set up the WHERE and the ORDER BY clause by calling the CreateWhereClause_RelationIdDropDownList function.
|
|
' It is better to customize the where clause there.
|
|
|
|
Dim wc As WhereClause = CreateWhereClause_RelationIdDropDownList()
|
|
' Create the ORDER BY clause to sort based on the displayed value.
|
|
|
|
|
|
Dim orderBy As OrderBy = New OrderBy(false, false)
|
|
orderBy.Add(RelationTable.Relation, OrderByItem.OrderDir.Asc)
|
|
|
|
Dim variables As System.Collections.Generic.IDictionary(Of String, Object) = New System.Collections.Generic.Dictionary(Of String, Object)
|
|
|
|
' 3. Read a total of maxItems from the database and insert them
|
|
Dim itemValues() As RelationRecord = Nothing
|
|
Dim evaluator As New FormulaEvaluator
|
|
If wc.RunQuery
|
|
Dim counter As Integer = 0
|
|
Dim pageNum As Integer = 0
|
|
Dim listDuplicates As New ArrayList()
|
|
|
|
Do
|
|
itemValues = RelationTable.GetRecords(wc, orderBy, pageNum, maxItems)
|
|
For each itemValue As RelationRecord In itemValues
|
|
' Create the item and add to the list.
|
|
Dim cvalue As String = Nothing
|
|
Dim fvalue As String = Nothing
|
|
If itemValue.RelationIdSpecified Then
|
|
cvalue = itemValue.RelationId.ToString()
|
|
|
|
If counter < maxItems AndAlso Me.RelationId.Items.FindByValue(cvalue) Is Nothing Then
|
|
|
|
Dim _isExpandableNonCompositeForeignKey As Boolean = PersonRelativeTable.Instance.TableDefinition.IsExpandableNonCompositeForeignKey(PersonRelativeTable.RelationId)
|
|
If _isExpandableNonCompositeForeignKey AndAlso PersonRelativeTable.RelationId.IsApplyDisplayAs Then
|
|
fvalue = PersonRelativeTable.GetDFKA(itemValue, PersonRelativeTable.RelationId)
|
|
End If
|
|
If (Not _isExpandableNonCompositeForeignKey) Or (String.IsNullOrEmpty(fvalue)) Then
|
|
fvalue = itemValue.Format(RelationTable.Relation)
|
|
End If
|
|
|
|
If fvalue Is Nothing OrElse fvalue.Trim() = "" Then fvalue = cvalue
|
|
|
|
If (IsNothing(fvalue)) Then
|
|
fvalue = ""
|
|
End If
|
|
|
|
fvalue = fvalue.Trim()
|
|
|
|
If ( fvalue.Length > 50 ) Then
|
|
fvalue = fvalue.Substring(0, 50) & "..."
|
|
End If
|
|
|
|
Dim dupItem As ListItem = Me.RelationId.Items.FindByText(fvalue)
|
|
|
|
If Not IsNothing(dupItem) Then
|
|
listDuplicates.Add(fvalue)
|
|
dupItem.Text = fvalue & " (ID " & dupItem.Value.Substring(0, Math.Min(dupItem.Value.Length,38)) & ")"
|
|
End If
|
|
|
|
Dim newItem As ListItem = New ListItem(fvalue, cvalue)
|
|
Me.RelationId.Items.Add(newItem)
|
|
|
|
If listDuplicates.Contains(fvalue) Then
|
|
newItem.Text = fvalue & " (ID " & cvalue.Substring(0, Math.Min(cvalue.Length,38)) & ")"
|
|
End If
|
|
|
|
counter += 1
|
|
End If
|
|
End If
|
|
Next
|
|
pageNum += 1
|
|
Loop While (itemValues.Length = maxItems AndAlso counter < maxItems)
|
|
End If
|
|
|
|
|
|
' 4. Set the selected value (insert if not already present).
|
|
|
|
If Not selectedValue Is Nothing AndAlso _
|
|
selectedValue.Trim <> "" AndAlso _
|
|
Not SetSelectedValue(Me.RelationId, selectedValue) AndAlso _
|
|
Not SetSelectedDisplayText(Me.RelationId, selectedValue)Then
|
|
|
|
' construct a whereclause to query a record with relation.RelationId = selectedValue
|
|
Dim filter2 As CompoundFilter = New CompoundFilter(CompoundFilter.CompoundingOperators.And_Operator, Nothing)
|
|
Dim whereClause2 As WhereClause = New WhereClause()
|
|
filter2.AddFilter(New BaseClasses.Data.ColumnValueFilter(RelationTable.RelationId, selectedValue, BaseClasses.Data.BaseFilter.ComparisonOperator.EqualsTo, False))
|
|
whereClause2.AddFilter(filter2, CompoundFilter.CompoundingOperators.And_Operator)
|
|
|
|
Try
|
|
' Execute the query
|
|
Dim rc() As RelationRecord = RelationTable.GetRecords(whereClause2, New OrderBy(False, False), 0, 1)
|
|
Dim vars As System.Collections.Generic.IDictionary(Of String, Object) = New System.Collections.Generic.Dictionary(Of String, Object)
|
|
' if find a record, add it to the dropdown and set it as selected item
|
|
If rc IsNot Nothing AndAlso rc.Length = 1 Then
|
|
Dim itemValue As RelationRecord = DirectCast(rc(0), RelationRecord)
|
|
' Create the item and add to the list.
|
|
Dim cvalue As String = Nothing
|
|
Dim fvalue As String = Nothing
|
|
If itemValue.RelationIdSpecified Then
|
|
cvalue = itemValue.RelationId.ToString()
|
|
Dim _isExpandableNonCompositeForeignKey As Boolean = PersonRelativeTable.Instance.TableDefinition.IsExpandableNonCompositeForeignKey(PersonRelativeTable.RelationId)
|
|
If _isExpandableNonCompositeForeignKey AndAlso PersonRelativeTable.RelationId.IsApplyDisplayAs Then
|
|
fvalue = PersonRelativeTable.GetDFKA(itemValue, PersonRelativeTable.RelationId)
|
|
End If
|
|
If (Not _isExpandableNonCompositeForeignKey) Or (String.IsNullOrEmpty(fvalue)) Then
|
|
fvalue = itemValue.Format(RelationTable.Relation)
|
|
End If
|
|
|
|
If fvalue Is Nothing OrElse fvalue.Trim() = "" Then fvalue = cvalue
|
|
Dim newItem As New ListItem(fvalue, cvalue)
|
|
Me.RelationId.Items.Add(newItem)
|
|
SetSelectedValue(Me.RelationId, selectedValue)
|
|
End If
|
|
End If
|
|
Catch
|
|
End Try
|
|
|
|
End If
|
|
|
|
|
|
End Sub
|
|
|
|
' Fill the RStatus list.
|
|
Protected Overridable Sub PopulateRStatusDropDownList( _
|
|
ByVal selectedValue As String, _
|
|
ByVal maxItems As Integer)
|
|
|
|
Me.RStatus.Items.Clear()
|
|
|
|
|
|
' 1. Setup the static list items
|
|
|
|
' Add the Please Select item.
|
|
Me.RStatus.Items.Insert(0, new ListItem(Me.Page.GetResourceValue("Txt:PleaseSelect", "Persons"), "--PLEASE_SELECT--"))
|
|
|
|
' 2. Set up the WHERE and the ORDER BY clause by calling the CreateWhereClause_RStatusDropDownList function.
|
|
' It is better to customize the where clause there.
|
|
|
|
Dim wc As WhereClause = CreateWhereClause_RStatusDropDownList()
|
|
' Create the ORDER BY clause to sort based on the displayed value.
|
|
|
|
|
|
Dim orderBy As OrderBy = New OrderBy(false, false)
|
|
orderBy.Add(RStatusTable.RStatus, OrderByItem.OrderDir.Asc)
|
|
|
|
Dim variables As System.Collections.Generic.IDictionary(Of String, Object) = New System.Collections.Generic.Dictionary(Of String, Object)
|
|
|
|
' 3. Read a total of maxItems from the database and insert them
|
|
Dim itemValues() As RStatusRecord = Nothing
|
|
Dim evaluator As New FormulaEvaluator
|
|
If wc.RunQuery
|
|
Dim counter As Integer = 0
|
|
Dim pageNum As Integer = 0
|
|
Dim listDuplicates As New ArrayList()
|
|
|
|
Do
|
|
itemValues = RStatusTable.GetRecords(wc, orderBy, pageNum, maxItems)
|
|
For each itemValue As RStatusRecord In itemValues
|
|
' Create the item and add to the list.
|
|
Dim cvalue As String = Nothing
|
|
Dim fvalue As String = Nothing
|
|
If itemValue.RStatusIdSpecified Then
|
|
cvalue = itemValue.RStatusId.ToString()
|
|
|
|
If counter < maxItems AndAlso Me.RStatus.Items.FindByValue(cvalue) Is Nothing Then
|
|
|
|
Dim _isExpandableNonCompositeForeignKey As Boolean = PersonRelativeTable.Instance.TableDefinition.IsExpandableNonCompositeForeignKey(PersonRelativeTable.RStatus)
|
|
If _isExpandableNonCompositeForeignKey AndAlso PersonRelativeTable.RStatus.IsApplyDisplayAs Then
|
|
fvalue = PersonRelativeTable.GetDFKA(itemValue, PersonRelativeTable.RStatus)
|
|
End If
|
|
If (Not _isExpandableNonCompositeForeignKey) Or (String.IsNullOrEmpty(fvalue)) Then
|
|
fvalue = itemValue.Format(RStatusTable.RStatus)
|
|
End If
|
|
|
|
If fvalue Is Nothing OrElse fvalue.Trim() = "" Then fvalue = cvalue
|
|
|
|
If (IsNothing(fvalue)) Then
|
|
fvalue = ""
|
|
End If
|
|
|
|
fvalue = fvalue.Trim()
|
|
|
|
If ( fvalue.Length > 50 ) Then
|
|
fvalue = fvalue.Substring(0, 50) & "..."
|
|
End If
|
|
|
|
Dim dupItem As ListItem = Me.RStatus.Items.FindByText(fvalue)
|
|
|
|
If Not IsNothing(dupItem) Then
|
|
listDuplicates.Add(fvalue)
|
|
dupItem.Text = fvalue & " (ID " & dupItem.Value.Substring(0, Math.Min(dupItem.Value.Length,38)) & ")"
|
|
End If
|
|
|
|
Dim newItem As ListItem = New ListItem(fvalue, cvalue)
|
|
Me.RStatus.Items.Add(newItem)
|
|
|
|
If listDuplicates.Contains(fvalue) Then
|
|
newItem.Text = fvalue & " (ID " & cvalue.Substring(0, Math.Min(cvalue.Length,38)) & ")"
|
|
End If
|
|
|
|
counter += 1
|
|
End If
|
|
End If
|
|
Next
|
|
pageNum += 1
|
|
Loop While (itemValues.Length = maxItems AndAlso counter < maxItems)
|
|
End If
|
|
|
|
|
|
' 4. Set the selected value (insert if not already present).
|
|
|
|
If Not selectedValue Is Nothing AndAlso _
|
|
selectedValue.Trim <> "" AndAlso _
|
|
Not SetSelectedValue(Me.RStatus, selectedValue) AndAlso _
|
|
Not SetSelectedDisplayText(Me.RStatus, selectedValue)Then
|
|
|
|
' construct a whereclause to query a record with RStatus.RStatusId = selectedValue
|
|
Dim filter2 As CompoundFilter = New CompoundFilter(CompoundFilter.CompoundingOperators.And_Operator, Nothing)
|
|
Dim whereClause2 As WhereClause = New WhereClause()
|
|
filter2.AddFilter(New BaseClasses.Data.ColumnValueFilter(RStatusTable.RStatusId, selectedValue, BaseClasses.Data.BaseFilter.ComparisonOperator.EqualsTo, False))
|
|
whereClause2.AddFilter(filter2, CompoundFilter.CompoundingOperators.And_Operator)
|
|
|
|
Try
|
|
' Execute the query
|
|
Dim rc() As RStatusRecord = RStatusTable.GetRecords(whereClause2, New OrderBy(False, False), 0, 1)
|
|
Dim vars As System.Collections.Generic.IDictionary(Of String, Object) = New System.Collections.Generic.Dictionary(Of String, Object)
|
|
' if find a record, add it to the dropdown and set it as selected item
|
|
If rc IsNot Nothing AndAlso rc.Length = 1 Then
|
|
Dim itemValue As RStatusRecord = DirectCast(rc(0), RStatusRecord)
|
|
' Create the item and add to the list.
|
|
Dim cvalue As String = Nothing
|
|
Dim fvalue As String = Nothing
|
|
If itemValue.RStatusIdSpecified Then
|
|
cvalue = itemValue.RStatusId.ToString()
|
|
Dim _isExpandableNonCompositeForeignKey As Boolean = PersonRelativeTable.Instance.TableDefinition.IsExpandableNonCompositeForeignKey(PersonRelativeTable.RStatus)
|
|
If _isExpandableNonCompositeForeignKey AndAlso PersonRelativeTable.RStatus.IsApplyDisplayAs Then
|
|
fvalue = PersonRelativeTable.GetDFKA(itemValue, PersonRelativeTable.RStatus)
|
|
End If
|
|
If (Not _isExpandableNonCompositeForeignKey) Or (String.IsNullOrEmpty(fvalue)) Then
|
|
fvalue = itemValue.Format(RStatusTable.RStatus)
|
|
End If
|
|
|
|
If fvalue Is Nothing OrElse fvalue.Trim() = "" Then fvalue = cvalue
|
|
Dim newItem As New ListItem(fvalue, cvalue)
|
|
Me.RStatus.Items.Add(newItem)
|
|
SetSelectedValue(Me.RStatus, selectedValue)
|
|
End If
|
|
End If
|
|
Catch
|
|
End Try
|
|
|
|
End If
|
|
|
|
|
|
End Sub
|
|
|
|
' event handler for ImageButton
|
|
Public Overridable Sub PersonRelativeRowDeleteButton_Click(ByVal sender As Object, ByVal args As ImageClickEventArgs)
|
|
|
|
Try
|
|
' Enclose all database retrieval/update code within a Transaction boundary
|
|
DbUtils.StartTransaction
|
|
|
|
If(Not Me.Page.IsPageRefresh) Then
|
|
|
|
Dim tc As PersonRelativeTableControl = DirectCast(GetParentControlObject(Me, "PersonRelativeTableControl"), PersonRelativeTableControl)
|
|
If Not (IsNothing(tc)) Then
|
|
If Not Me.IsNewRecord Then
|
|
tc.AddToDeletedRecordIds(DirectCast(Me, PersonRelativeTableControlRow))
|
|
End If
|
|
Me.Visible = False
|
|
tc.SetFormulaControls()
|
|
End If
|
|
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
' Upon error, rollback the transaction
|
|
Me.Page.RollBackTransaction(sender)
|
|
Me.Page.ErrorOnPage = True
|
|
|
|
' Report the error message to the end user
|
|
Utils.MiscUtils.RegisterJScriptAlert(Me, "BUTTON_CLICK_MESSAGE", ex.Message)
|
|
|
|
Finally
|
|
DbUtils.EndTransaction
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
' event handler for ImageButton
|
|
Public Overridable Sub PersonRelativeRowEditButton_Click(ByVal sender As Object, ByVal args As ImageClickEventArgs)
|
|
|
|
' The redirect URL is set on the Properties, Custom Properties or Actions.
|
|
' The ModifyRedirectURL call resolves the parameters before the
|
|
' Response.Redirect redirects the page to the URL.
|
|
' Any code after the Response.Redirect call will not be executed, since the page is
|
|
' redirected to the URL.
|
|
|
|
|
|
Dim url As String = "../PersonRelative/EditPersonRelative.aspx?PersonRelative={PK}"
|
|
|
|
Dim shouldRedirect As Boolean = True
|
|
Dim TargetKey As String = Nothing
|
|
Dim DFKA As String = TargetKey
|
|
Dim id As String = DFKA
|
|
Dim value As String = id
|
|
|
|
Try
|
|
' Enclose all database retrieval/update code within a Transaction boundary
|
|
DbUtils.StartTransaction
|
|
|
|
url = Me.ModifyRedirectUrl(url, "",False)
|
|
url = Me.Page.ModifyRedirectUrl(url, "",False)
|
|
|
|
Catch ex As Exception
|
|
' Upon error, rollback the transaction
|
|
Me.Page.RollBackTransaction(sender)
|
|
shouldRedirect = False
|
|
Me.Page.ErrorOnPage = True
|
|
|
|
' Report the error message to the end user
|
|
Utils.MiscUtils.RegisterJScriptAlert(Me, "BUTTON_CLICK_MESSAGE", ex.Message)
|
|
|
|
Finally
|
|
DbUtils.EndTransaction
|
|
End Try
|
|
If shouldRedirect Then
|
|
Me.Page.ShouldSaveControlsToSession = True
|
|
Me.Page.Response.Redirect(url)
|
|
ElseIf Not TargetKey Is Nothing AndAlso _
|
|
Not shouldRedirect Then
|
|
Me.Page.ShouldSaveControlsToSession = True
|
|
Me.Page.CloseWindow(True)
|
|
|
|
End If
|
|
End Sub
|
|
|
|
Protected Overridable Sub PersonalId_SelectedIndexChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
' for the value inserted by quick add button or large list selector,
|
|
' the value is necessary to be inserted by this event during postback
|
|
Dim val As String = CType(Me.Page.Session()(PersonalId.ClientID & "_SelectedValue"), String)
|
|
Dim displayText As String = CType(Me.Page.Session()(PersonalId.ClientID & "_SelectedDisplayText"), String)
|
|
If displayText <> "" AndAlso val <> "" Then
|
|
Me.PersonalId.Items.Add(New ListItem(displayText, val))
|
|
Me.PersonalId.SelectedIndex = Me.PersonalId.Items.Count - 1
|
|
Me.Page.Session.Remove(PersonalId.ClientID & "_SelectedValue")
|
|
Me.Page.Session.Remove(PersonalId.ClientID & "_SelectedDisplayText")
|
|
End If
|
|
|
|
|
|
|
|
|
|
End Sub
|
|
|
|
Protected Overridable Sub RelationId_SelectedIndexChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
' for the value inserted by quick add button or large list selector,
|
|
' the value is necessary to be inserted by this event during postback
|
|
Dim val As String = CType(Me.Page.Session()(RelationId.ClientID & "_SelectedValue"), String)
|
|
Dim displayText As String = CType(Me.Page.Session()(RelationId.ClientID & "_SelectedDisplayText"), String)
|
|
If displayText <> "" AndAlso val <> "" Then
|
|
Me.RelationId.Items.Add(New ListItem(displayText, val))
|
|
Me.RelationId.SelectedIndex = Me.RelationId.Items.Count - 1
|
|
Me.Page.Session.Remove(RelationId.ClientID & "_SelectedValue")
|
|
Me.Page.Session.Remove(RelationId.ClientID & "_SelectedDisplayText")
|
|
End If
|
|
|
|
|
|
|
|
|
|
End Sub
|
|
|
|
Protected Overridable Sub RStatus_SelectedIndexChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
' for the value inserted by quick add button or large list selector,
|
|
' the value is necessary to be inserted by this event during postback
|
|
Dim val As String = CType(Me.Page.Session()(RStatus.ClientID & "_SelectedValue"), String)
|
|
Dim displayText As String = CType(Me.Page.Session()(RStatus.ClientID & "_SelectedDisplayText"), String)
|
|
If displayText <> "" AndAlso val <> "" Then
|
|
Me.RStatus.Items.Add(New ListItem(displayText, val))
|
|
Me.RStatus.SelectedIndex = Me.RStatus.Items.Count - 1
|
|
Me.Page.Session.Remove(RStatus.ClientID & "_SelectedValue")
|
|
Me.Page.Session.Remove(RStatus.ClientID & "_SelectedDisplayText")
|
|
End If
|
|
|
|
|
|
|
|
|
|
End Sub
|
|
|
|
Protected Overridable Sub FLastName_TextChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Protected Overridable Sub FName_TextChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Protected Overridable Sub MLastName_TextChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Protected Overridable Sub MName_TextChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Protected Overridable Sub MOrLastName_TextChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Protected Overridable Sub RAddress_TextChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Protected Overridable Sub RAmphur_TextChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Protected Overridable Sub RBirthDate_TextChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Protected Overridable Sub Ref1_TextChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Protected Overridable Sub RefDate_TextChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Protected Overridable Sub RFirstName_TextChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Protected Overridable Sub RLastName_TextChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Protected Overridable Sub RNationality_TextChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Protected Overridable Sub ROrigin_TextChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Protected Overridable Sub ROrLastName_TextChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Protected Overridable Sub RPreName_TextChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Protected Overridable Sub RProvince_TextChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Protected Overridable Sub RReligion_TextChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Protected Overridable Sub RRemark_TextChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Protected Overridable Sub RStatusDate_TextChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Protected Overridable Sub RStatusRef_TextChanged(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
End Sub
|
|
|
|
|
|
Private _PreviousUIData As New Hashtable
|
|
Public Overridable Property PreviousUIData() As Hashtable
|
|
Get
|
|
Return _PreviousUIData
|
|
End Get
|
|
Set(ByVal value As Hashtable)
|
|
_PreviousUIData = value
|
|
End Set
|
|
End Property
|
|
|
|
Private _IsNewRecord As Boolean = True
|
|
Public Overridable Property IsNewRecord() As Boolean
|
|
Get
|
|
Return Me._IsNewRecord
|
|
End Get
|
|
Set(ByVal value As Boolean)
|
|
Me._IsNewRecord = value
|
|
End Set
|
|
End Property
|
|
|
|
Private _DataChanged As Boolean = False
|
|
Public Overridable Property DataChanged() As Boolean
|
|
Get
|
|
Return Me._DataChanged
|
|
End Get
|
|
Set(ByVal Value As Boolean)
|
|
Me._DataChanged = Value
|
|
End Set
|
|
End Property
|
|
|
|
Private _ResetData As Boolean = False
|
|
Public Overridable Property ResetData() As Boolean
|
|
Get
|
|
Return Me._ResetData
|
|
End Get
|
|
Set(ByVal Value As Boolean)
|
|
Me._ResetData = Value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property RecordUniqueId() As String
|
|
Get
|
|
Return CType(Me.ViewState("BasePersonRelativeTableControlRow_Rec"), String)
|
|
End Get
|
|
Set(ByVal value As String)
|
|
Me.ViewState("BasePersonRelativeTableControlRow_Rec") = value
|
|
End Set
|
|
End Property
|
|
|
|
Private _DataSource As PersonRelativeRecord
|
|
Public Property DataSource() As PersonRelativeRecord
|
|
Get
|
|
Return Me._DataSource
|
|
End Get
|
|
|
|
Set(ByVal value As PersonRelativeRecord)
|
|
|
|
Me._DataSource = value
|
|
End Set
|
|
End Property
|
|
|
|
|
|
|
|
Private _checkSum As String
|
|
Public Overridable Property CheckSum() As String
|
|
Get
|
|
Return Me._checkSum
|
|
End Get
|
|
Set(ByVal value As String)
|
|
Me._checkSum = value
|
|
End Set
|
|
End Property
|
|
|
|
Private _TotalPages As Integer
|
|
Public Property TotalPages() As Integer
|
|
Get
|
|
Return Me._TotalPages
|
|
End Get
|
|
Set(ByVal value As Integer)
|
|
Me._TotalPages = value
|
|
End Set
|
|
End Property
|
|
|
|
Private _PageIndex As Integer
|
|
Public Property PageIndex() As Integer
|
|
Get
|
|
' Return the PageIndex
|
|
Return Me._PageIndex
|
|
End Get
|
|
Set(ByVal value As Integer)
|
|
Me._PageIndex = value
|
|
End Set
|
|
End Property
|
|
|
|
Private _DisplayLastPage As Boolean
|
|
Public Property DisplayLastPage() As Boolean
|
|
Get
|
|
Return Me._DisplayLastPage
|
|
End Get
|
|
Set(ByVal value As Boolean)
|
|
Me._DisplayLastPage = value
|
|
End Set
|
|
End Property
|
|
|
|
|
|
|
|
#Region "Helper Properties"
|
|
|
|
Public ReadOnly Property FLastName() As System.Web.UI.WebControls.TextBox
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "FLastName"), System.Web.UI.WebControls.TextBox)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property FName() As System.Web.UI.WebControls.TextBox
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "FName"), System.Web.UI.WebControls.TextBox)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property MLastName() As System.Web.UI.WebControls.TextBox
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "MLastName"), System.Web.UI.WebControls.TextBox)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property MName() As System.Web.UI.WebControls.TextBox
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "MName"), System.Web.UI.WebControls.TextBox)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property MOrLastName() As System.Web.UI.WebControls.TextBox
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "MOrLastName"), System.Web.UI.WebControls.TextBox)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property PersonalId() As System.Web.UI.WebControls.DropDownList
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "PersonalId"), System.Web.UI.WebControls.DropDownList)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property PersonRelativeRecordRowSelection() As System.Web.UI.WebControls.CheckBox
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "PersonRelativeRecordRowSelection"), System.Web.UI.WebControls.CheckBox)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property PersonRelativeRowDeleteButton() As System.Web.UI.WebControls.ImageButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "PersonRelativeRowDeleteButton"), System.Web.UI.WebControls.ImageButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property PersonRelativeRowEditButton() As System.Web.UI.WebControls.ImageButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "PersonRelativeRowEditButton"), System.Web.UI.WebControls.ImageButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RAddress() As System.Web.UI.WebControls.TextBox
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RAddress"), System.Web.UI.WebControls.TextBox)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RAmphur() As System.Web.UI.WebControls.TextBox
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RAmphur"), System.Web.UI.WebControls.TextBox)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RBirthDate() As System.Web.UI.WebControls.TextBox
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RBirthDate"), System.Web.UI.WebControls.TextBox)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property Ref1() As System.Web.UI.WebControls.TextBox
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "Ref1"), System.Web.UI.WebControls.TextBox)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RefDate() As System.Web.UI.WebControls.TextBox
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RefDate"), System.Web.UI.WebControls.TextBox)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RelationId() As System.Web.UI.WebControls.DropDownList
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RelationId"), System.Web.UI.WebControls.DropDownList)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RFirstName() As System.Web.UI.WebControls.TextBox
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RFirstName"), System.Web.UI.WebControls.TextBox)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RLastName() As System.Web.UI.WebControls.TextBox
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RLastName"), System.Web.UI.WebControls.TextBox)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RNationality() As System.Web.UI.WebControls.TextBox
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RNationality"), System.Web.UI.WebControls.TextBox)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property ROrigin() As System.Web.UI.WebControls.TextBox
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "ROrigin"), System.Web.UI.WebControls.TextBox)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property ROrLastName() As System.Web.UI.WebControls.TextBox
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "ROrLastName"), System.Web.UI.WebControls.TextBox)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RPreName() As System.Web.UI.WebControls.TextBox
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RPreName"), System.Web.UI.WebControls.TextBox)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RProvince() As System.Web.UI.WebControls.TextBox
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RProvince"), System.Web.UI.WebControls.TextBox)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RReligion() As System.Web.UI.WebControls.TextBox
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RReligion"), System.Web.UI.WebControls.TextBox)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RRemark() As System.Web.UI.WebControls.TextBox
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RRemark"), System.Web.UI.WebControls.TextBox)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RStatus() As System.Web.UI.WebControls.DropDownList
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RStatus"), System.Web.UI.WebControls.DropDownList)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RStatusDate() As System.Web.UI.WebControls.TextBox
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RStatusDate"), System.Web.UI.WebControls.TextBox)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RStatusRef() As System.Web.UI.WebControls.TextBox
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RStatusRef"), System.Web.UI.WebControls.TextBox)
|
|
End Get
|
|
End Property
|
|
|
|
#End Region
|
|
|
|
#Region "Helper Functions"
|
|
|
|
Public Overrides Overloads Function ModifyRedirectUrl(ByVal url As String, ByVal arg As String, ByVal bEncrypt As Boolean) As String
|
|
Return Me.Page.EvaluateExpressions(url, arg, bEncrypt, Me)
|
|
End Function
|
|
|
|
Public Overrides Overloads Function EvaluateExpressions(ByVal url As String, ByVal arg As String, ByVal bEncrypt As Boolean) As String
|
|
|
|
Dim rec As PersonRelativeRecord = Nothing
|
|
|
|
|
|
Try
|
|
rec = Me.GetRecord()
|
|
Catch ex As Exception
|
|
' Do nothing
|
|
End Try
|
|
|
|
If rec Is Nothing AndAlso url.IndexOf("{") >= 0 Then
|
|
' Localization.
|
|
|
|
Throw New Exception(Page.GetResourceValue("Err:RecDataSrcNotInitialized", "Persons"))
|
|
|
|
End If
|
|
Return EvaluateExpressions(url, arg, rec, bEncrypt)
|
|
End Function
|
|
|
|
|
|
Public Overridable Function GetRecord() As PersonRelativeRecord
|
|
If Not Me.DataSource Is Nothing Then
|
|
Return Me.DataSource
|
|
End If
|
|
|
|
If Not Me.RecordUniqueId Is Nothing Then
|
|
|
|
Return PersonRelativeTable.GetRecord(Me.RecordUniqueId, True)
|
|
|
|
End If
|
|
|
|
' Localization.
|
|
|
|
Throw New Exception(Page.GetResourceValue("Err:RetrieveRec", "Persons"))
|
|
|
|
End Function
|
|
|
|
Public Shadows ReadOnly Property Page() As BaseApplicationPage
|
|
Get
|
|
Return DirectCast(MyBase.Page, BaseApplicationPage)
|
|
End Get
|
|
End Property
|
|
|
|
#End Region
|
|
|
|
End Class
|
|
|
|
|
|
|
|
' Base class for the PersonRelativeTableControl control on the EditPersonRelativeTable page.
|
|
' Do not modify this class. Instead override any method in PersonRelativeTableControl.
|
|
Public Class BasePersonRelativeTableControl
|
|
Inherits Persons.UI.BaseApplicationTableControl
|
|
|
|
|
|
|
|
Protected Overridable Sub Control_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Init
|
|
|
|
|
|
|
|
' Setup the filter and search events.
|
|
|
|
|
|
|
|
' Control Initializations.
|
|
' Initialize the table's current sort order.
|
|
|
|
If Me.InSession(Me, "Order_By") Then
|
|
Me.CurrentSortOrder = OrderBy.FromXmlString(Me.GetFromSession(Me, "Order_By", Nothing))
|
|
Else
|
|
Me.CurrentSortOrder = New OrderBy(True, False)
|
|
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.RelationId, OrderByItem.OrderDir.Asc)
|
|
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.RBirthDate, OrderByItem.OrderDir.Asc)
|
|
|
|
End If
|
|
|
|
|
|
|
|
' Setup default pagination settings.
|
|
|
|
Me.PageSize = CInt(Me.GetFromSession(Me, "Page_Size", "10"))
|
|
Me.PageIndex = CInt(Me.GetFromSession(Me, "Page_Index", "0"))
|
|
|
|
|
|
|
|
Me.ClearControlsFromSession()
|
|
End Sub
|
|
|
|
Protected Overridable Sub Control_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
|
|
|
|
SaveControlsToSession_Ajax()
|
|
|
|
' Show confirmation message on Click
|
|
Me.PersonRelativeDeleteButton.Attributes.Add("onClick", "return (confirm('" & (CType(Me.Page,BaseApplicationPage)).GetResourceValue("DeleteConfirm", "Persons") & "'));")
|
|
|
|
' Setup the pagination events.
|
|
|
|
AddHandler Me.PersonRelativePagination.FirstPage.Click, AddressOf PersonRelativePagination_FirstPage_Click
|
|
|
|
AddHandler Me.PersonRelativePagination.LastPage.Click, AddressOf PersonRelativePagination_LastPage_Click
|
|
|
|
AddHandler Me.PersonRelativePagination.NextPage.Click, AddressOf PersonRelativePagination_NextPage_Click
|
|
|
|
AddHandler Me.PersonRelativePagination.PageSizeButton.Click, AddressOf PersonRelativePagination_PageSizeButton_Click
|
|
|
|
AddHandler Me.PersonRelativePagination.PreviousPage.Click, AddressOf PersonRelativePagination_PreviousPage_Click
|
|
|
|
|
|
' Setup the sorting events.
|
|
|
|
AddHandler Me.FLastNameLabel.Click, AddressOf FLastNameLabel_Click
|
|
|
|
AddHandler Me.FNameLabel.Click, AddressOf FNameLabel_Click
|
|
|
|
AddHandler Me.MLastNameLabel.Click, AddressOf MLastNameLabel_Click
|
|
|
|
AddHandler Me.MNameLabel.Click, AddressOf MNameLabel_Click
|
|
|
|
AddHandler Me.MOrLastNameLabel.Click, AddressOf MOrLastNameLabel_Click
|
|
|
|
AddHandler Me.RAddressLabel.Click, AddressOf RAddressLabel_Click
|
|
|
|
AddHandler Me.RAmphurLabel.Click, AddressOf RAmphurLabel_Click
|
|
|
|
AddHandler Me.RBirthDateLabel.Click, AddressOf RBirthDateLabel_Click
|
|
|
|
AddHandler Me.RefDateLabel.Click, AddressOf RefDateLabel_Click
|
|
|
|
AddHandler Me.RefLabel.Click, AddressOf RefLabel_Click
|
|
|
|
AddHandler Me.RelationIdLabel1.Click, AddressOf RelationIdLabel1_Click
|
|
|
|
AddHandler Me.RFirstNameLabel.Click, AddressOf RFirstNameLabel_Click
|
|
|
|
AddHandler Me.RLastNameLabel.Click, AddressOf RLastNameLabel_Click
|
|
|
|
AddHandler Me.RNationalityLabel.Click, AddressOf RNationalityLabel_Click
|
|
|
|
AddHandler Me.ROriginLabel.Click, AddressOf ROriginLabel_Click
|
|
|
|
AddHandler Me.ROrLastNameLabel.Click, AddressOf ROrLastNameLabel_Click
|
|
|
|
AddHandler Me.RPreNameLabel.Click, AddressOf RPreNameLabel_Click
|
|
|
|
AddHandler Me.RProvinceLabel.Click, AddressOf RProvinceLabel_Click
|
|
|
|
AddHandler Me.RReligionLabel.Click, AddressOf RReligionLabel_Click
|
|
|
|
AddHandler Me.RRemarkLabel.Click, AddressOf RRemarkLabel_Click
|
|
|
|
AddHandler Me.RStatusDateLabel.Click, AddressOf RStatusDateLabel_Click
|
|
|
|
AddHandler Me.RStatusLabel.Click, AddressOf RStatusLabel_Click
|
|
|
|
AddHandler Me.RStatusRefLabel.Click, AddressOf RStatusRefLabel_Click
|
|
|
|
' Setup the button events.
|
|
|
|
AddHandler Me.PersonRelativeAddButton.Click, AddressOf PersonRelativeAddButton_Click
|
|
|
|
AddHandler Me.PersonRelativeDeleteButton.Click, AddressOf PersonRelativeDeleteButton_Click
|
|
|
|
AddHandler Me.PersonRelativeEditButton.Click, AddressOf PersonRelativeEditButton_Click
|
|
|
|
AddHandler Me.PersonRelativeRefreshButton.Click, AddressOf PersonRelativeRefreshButton_Click
|
|
|
|
AddHandler Me.PersonRelativeResetButton.Click, AddressOf PersonRelativeResetButton_Click
|
|
|
|
AddHandler Me.PersonRelativeSaveButton.Click, AddressOf PersonRelativeSaveButton_Click
|
|
|
|
Me.PersonRelativeSaveButton.Attributes.Add("onclick", "SubmitHRefOnce(this, """ & Me.Page.GetResourceValue("Txt:SaveRecord", "Persons") & """);")
|
|
|
|
|
|
' Setup events for others
|
|
|
|
End Sub
|
|
|
|
|
|
Public Overridable Sub LoadData()
|
|
|
|
' Read data from database. Returns an array of records that can be assigned
|
|
' to the DataSource table control property.
|
|
Try
|
|
Dim joinFilter As CompoundFilter = CreateCompoundJoinFilter()
|
|
|
|
' The WHERE clause will be empty when displaying all records in table.
|
|
Dim wc As WhereClause = CreateWhereClause()
|
|
If wc IsNot Nothing AndAlso Not wc.RunQuery Then
|
|
' Initialize an empty array of records
|
|
Dim alist As New ArrayList(0)
|
|
Me.DataSource = DirectCast(alist.ToArray(GetType(PersonRelativeRecord)), PersonRelativeRecord())
|
|
' Add records to the list if needed.
|
|
Me.AddNewRecords()
|
|
Me._TotalRecords = 0
|
|
Me._TotalPages = 0
|
|
Return
|
|
End If
|
|
|
|
' Call OrderBy to determine the order - either use the order defined
|
|
' on the Query Wizard, or specified by user (by clicking on column heading)
|
|
Dim orderBy As OrderBy = CreateOrderBy()
|
|
|
|
' Get the pagesize from the pagesize control.
|
|
Me.GetPageSize()
|
|
|
|
If Me.DisplayLastPage Then
|
|
Dim totalRecords As Integer = If(Me._TotalRecords < 0, PersonRelativeTable.GetRecordCount(CreateCompoundJoinFilter(), CreateWhereClause()), Me._TotalRecords)
|
|
|
|
Dim totalPages As Integer = CInt(Math.Ceiling(totalRecords / Me.PageSize))
|
|
|
|
Me.PageIndex = totalPages - 1
|
|
End If
|
|
|
|
' Make sure PageIndex (current page) and PageSize are within bounds.
|
|
If Me.PageIndex < 0 Then
|
|
Me.PageIndex = 0
|
|
End If
|
|
If Me.PageSize < 1 Then
|
|
Me.PageSize = 1
|
|
End If
|
|
|
|
' Retrieve the records and set the table DataSource.
|
|
' Only PageSize records are fetched starting at PageIndex (zero based).
|
|
If Me.AddNewRecord > 0 Then
|
|
' Make sure to preserve the previously entered data on new rows.
|
|
Dim postdata As New ArrayList
|
|
For Each rc As PersonRelativeTableControlRow In Me.GetRecordControls()
|
|
If Not rc.IsNewRecord Then
|
|
rc.DataSource = rc.GetRecord()
|
|
rc.GetUIData()
|
|
postdata.Add(rc.DataSource)
|
|
UIData.Add(rc.PreservedUIData())
|
|
End If
|
|
Next
|
|
Me.DataSource = DirectCast(postdata.ToArray(GetType(PersonRelativeRecord)), PersonRelativeRecord())
|
|
Else ' Get the records from the database
|
|
Me.DataSource = PersonRelativeTable.GetRecords(joinFilter, wc, orderBy, Me.PageIndex, Me.PageSize)
|
|
|
|
End If
|
|
|
|
' if the datasource contains no records contained in database, then load the last page.
|
|
If (DbUtils.GetCreatedRecords(Me.DataSource).Length = 0 AndAlso Not Me.DisplayLastPage) Then
|
|
Me.DisplayLastPage = True
|
|
LoadData()
|
|
Else
|
|
|
|
' Add any new rows desired by the user.
|
|
Me.AddNewRecords()
|
|
|
|
' Turn off the ToggleAll checkbox
|
|
Me.PersonRelativeToggleAll.Checked = False
|
|
|
|
|
|
' Initialize the page and grand totals. now
|
|
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
' Report the error message to the end user
|
|
Dim msg As String = ex.Message
|
|
If ex.InnerException IsNot Nothing Then
|
|
msg = msg & " InnerException: " & ex.InnerException.Message
|
|
End If
|
|
Throw New Exception(msg, ex.InnerException)
|
|
End Try
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
Public Overrides Sub DataBind()
|
|
' The DataBind method binds the user interface controls to the values
|
|
' from the database record for each row in the table. To do this, it calls the
|
|
' DataBind for each of the rows.
|
|
' DataBind also populates any filters above the table, and sets the pagination
|
|
' control to the correct number of records and the current page number.
|
|
|
|
MyBase.DataBind()
|
|
|
|
' Make sure that the DataSource is initialized.
|
|
If Me.DataSource Is Nothing Then
|
|
Return
|
|
End If
|
|
|
|
'LoadData for DataSource for chart and report if they exist
|
|
|
|
' Improve performance by prefetching display as records.
|
|
Me.PreFetchForeignKeyValues()
|
|
|
|
' Setup the pagination controls.
|
|
BindPaginationControls()
|
|
|
|
|
|
|
|
' Bind the repeater with the list of records to expand the UI.
|
|
Dim rep As System.Web.UI.WebControls.Repeater = CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "PersonRelativeTableControlRepeater"), System.Web.UI.WebControls.Repeater)
|
|
If rep Is Nothing Then Return
|
|
rep.DataSource = DataSource()
|
|
rep.DataBind()
|
|
|
|
Dim index As Integer = 0
|
|
For Each repItem As System.Web.UI.WebControls.RepeaterItem In rep.Items
|
|
' Loop through all rows in the table, set its DataSource and call DataBind().
|
|
Dim recControl As PersonRelativeTableControlRow = DirectCast(repItem.FindControl("PersonRelativeTableControlRow"), PersonRelativeTableControlRow)
|
|
recControl.DataSource = Me.DataSource(index)
|
|
If Me.UIData.Count > index Then
|
|
recControl.PreviousUIData = Me.UIData(index)
|
|
End If
|
|
recControl.DataBind()
|
|
recControl.Visible = Not Me.InDeletedRecordIds(recControl)
|
|
|
|
index += 1
|
|
Next
|
|
|
|
|
|
|
|
|
|
' Call the Set methods for each controls on the panel
|
|
|
|
SetFLastNameLabel()
|
|
SetFNameLabel()
|
|
SetMLastNameLabel()
|
|
SetMNameLabel()
|
|
SetMOrLastNameLabel()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SetPersonRelativeTableControlCollapsibleRegion()
|
|
SetPersonRelativeTableControlIcon()
|
|
SetPersonRelativeTableControlPanelExtender()
|
|
|
|
|
|
SetRAddressLabel()
|
|
SetRAmphurLabel()
|
|
SetRBirthDateLabel()
|
|
SetRefDateLabel()
|
|
SetRefLabel()
|
|
SetRelationIdLabel1()
|
|
SetRFirstNameLabel()
|
|
SetRLastNameLabel()
|
|
SetRNationalityLabel()
|
|
SetROriginLabel()
|
|
SetROrLastNameLabel()
|
|
SetRPreNameLabel()
|
|
SetRProvinceLabel()
|
|
SetRReligionLabel()
|
|
SetRRemarkLabel()
|
|
SetRStatusDateLabel()
|
|
SetRStatusLabel()
|
|
SetRStatusRefLabel()
|
|
' setting the state of expand or collapse alternative rows
|
|
|
|
|
|
' Load data for each record and table UI control.
|
|
' Ordering is important because child controls get
|
|
' their parent ids from their parent UI controls.
|
|
|
|
|
|
' this method calls the set method for controls with special formula like running total, sum, rank, etc
|
|
SetFormulaControls()
|
|
End Sub
|
|
|
|
Public Overridable Sub SetFormulaControls()
|
|
' this method calls Set methods for the control that has special formula
|
|
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
Public Sub PreFetchForeignKeyValues()
|
|
If (IsNothing(Me.DataSource))
|
|
Return
|
|
End If
|
|
|
|
Me.Page.PregetDfkaRecords(PersonRelativeTable.PersonalId, Me.DataSource)
|
|
|
|
Me.Page.PregetDfkaRecords(PersonRelativeTable.RelationId, Me.DataSource)
|
|
|
|
Me.Page.PregetDfkaRecords(PersonRelativeTable.RStatus, Me.DataSource)
|
|
|
|
End Sub
|
|
|
|
|
|
Public Overridable Sub RegisterPostback()
|
|
|
|
Me.Page.RegisterPostBackTrigger(MiscUtils.FindControlRecursively(Me,"PersonRelativeSaveButton"))
|
|
|
|
|
|
End Sub
|
|
|
|
Public EvaluateFormulaDelegate As BaseClasses.Data.DataSource.EvaluateFormulaDelegate = New BaseClasses.Data.DataSource.EvaluateFormulaDelegate(AddressOf Me.EvaluateFormula)
|
|
|
|
Public Overridable Function EvaluateFormula(ByVal formula As String, ByVal dataSourceForEvaluate as BaseClasses.Data.BaseRecord, ByVal format as String, ByVal variables As System.Collections.Generic.IDictionary(Of String, Object), ByVal includeDS As Boolean, ByVal e as FormulaEvaluator) As String
|
|
If e Is Nothing
|
|
e = New FormulaEvaluator()
|
|
End If
|
|
|
|
e.Variables.Clear()
|
|
|
|
|
|
' add variables for formula evaluation
|
|
If variables IsNot Nothing Then
|
|
Dim enumerator As System.Collections.Generic.IEnumerator(Of System.Collections.Generic.KeyValuePair(Of String, Object)) = variables.GetEnumerator()
|
|
While enumerator.MoveNext()
|
|
e.Variables.Add(enumerator.Current.Key, enumerator.Current.Value)
|
|
End While
|
|
End If
|
|
|
|
If includeDS
|
|
|
|
End If
|
|
|
|
' All variables referred to in the formula are expected to be
|
|
' properties of the DataSource. For example, referring to
|
|
' UnitPrice as a variable will refer to DataSource.UnitPrice
|
|
e.DataSource = dataSourceForEvaluate
|
|
|
|
' Define the calling control. This is used to add other
|
|
' related table and record controls as variables.
|
|
e.CallingControl = Me
|
|
|
|
Dim resultObj As Object = e.Evaluate(formula)
|
|
If resultObj Is Nothing Then
|
|
Return ""
|
|
End If
|
|
|
|
If Not String.IsNullOrEmpty(format) AndAlso (String.IsNullOrEmpty(formula) OrElse formula.IndexOf("Format(") < 0) Then
|
|
Return FormulaUtils.Format(resultObj, format)
|
|
Else
|
|
Return resultObj.ToString()
|
|
End If
|
|
End Function
|
|
|
|
Public Overridable Function EvaluateFormula(ByVal formula As String, ByVal dataSourceForEvaluate as BaseClasses.Data.BaseRecord, ByVal format as String, ByVal variables As System.Collections.Generic.IDictionary(Of String, Object), ByVal includeDS As Boolean) As String
|
|
Return EvaluateFormula(formula, dataSourceForEvaluate, format,variables ,includeDS, Nothing)
|
|
End Function
|
|
|
|
|
|
Public Overridable Function EvaluateFormula(ByVal formula As String, ByVal dataSourceForEvaluate As BaseClasses.Data.BaseRecord, ByVal format As String, ByVal variables As System.Collections.Generic.IDictionary(Of String, Object)) As String
|
|
Return EvaluateFormula(formula, dataSourceForEvaluate, format, variables ,True, Nothing)
|
|
End Function
|
|
|
|
Public Overridable Function EvaluateFormula(ByVal formula As String, ByVal dataSourceForEvaluate As BaseClasses.Data.BaseRecord, ByVal format As String) As String
|
|
Return Me.EvaluateFormula(formula, dataSourceForEvaluate, format, Nothing, True, Nothing)
|
|
End Function
|
|
|
|
Public Overridable Function EvaluateFormula(ByVal formula As String, ByVal dataSourceForEvaluate As BaseClasses.Data.BaseRecord, ByVal variables As System.Collections.Generic.IDictionary(Of String, Object), ByVal e as FormulaEvaluator) As String
|
|
Return Me.EvaluateFormula(formula, dataSourceForEvaluate, Nothing, variables, True, e)
|
|
End Function
|
|
|
|
Public Overridable Function EvaluateFormula(ByVal formula As String, ByVal dataSourceForEvaluate As BaseClasses.Data.BaseRecord) As String
|
|
Return Me.EvaluateFormula(formula, dataSourceForEvaluate, Nothing, Nothing, True, Nothing)
|
|
End Function
|
|
|
|
Public Overridable Function EvaluateFormula(ByVal formula As String, ByVal includeDS as Boolean) As String
|
|
Return Me.EvaluateFormula(formula, Nothing, Nothing, Nothing, includeDS, Nothing)
|
|
End Function
|
|
|
|
Public Overridable Function EvaluateFormula(ByVal formula As String) As String
|
|
Return Me.EvaluateFormula(formula, Nothing, Nothing, Nothing, True, Nothing)
|
|
End Function
|
|
|
|
|
|
|
|
|
|
Public Overridable Sub ResetControl()
|
|
|
|
Me.CurrentSortOrder.Reset()
|
|
If (Me.InSession(Me, "Order_By")) Then
|
|
Me.CurrentSortOrder = OrderBy.FromXmlString(Me.GetFromSession(Me, "Order_By", Nothing))
|
|
Else
|
|
Me.CurrentSortOrder = New OrderBy(True, False)
|
|
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.RelationId, OrderByItem.OrderDir.Asc)
|
|
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.RBirthDate, OrderByItem.OrderDir.Asc)
|
|
|
|
End If
|
|
|
|
Me.PageIndex = 0
|
|
End Sub
|
|
|
|
Protected Overridable Sub BindPaginationControls()
|
|
' Setup the pagination controls.
|
|
|
|
' Bind the pagination labels.
|
|
|
|
If DbUtils.GetCreatedRecords(Me.DataSource).Length > 0 Then
|
|
|
|
Me.PersonRelativePagination.CurrentPage.Text = (Me.PageIndex + 1).ToString()
|
|
Else
|
|
Me.PersonRelativePagination.CurrentPage.Text = "0"
|
|
End If
|
|
Me.PersonRelativePagination.PageSize.Text = Me.PageSize.ToString()
|
|
Me.PersonRelativePagination.TotalItems.Text = Me.TotalRecords.ToString()
|
|
Me.PersonRelativePagination.TotalPages.Text = Me.TotalPages.ToString()
|
|
|
|
' Bind the buttons for PersonRelativeTableControl pagination.
|
|
|
|
Me.PersonRelativePagination.FirstPage.Enabled = Not (Me.PageIndex = 0)
|
|
If Me._TotalPages < 0 Then ' if the total pages is not determined yet, enable last and next buttons
|
|
Me.PersonRelativePagination.LastPage.Enabled = True
|
|
ElseIf Me._TotalPages = 0 ' if the total pages is determined and it is 0, enable last and next buttons
|
|
Me.PersonRelativePagination.LastPage.Enabled = False
|
|
Else ' if the total pages is the last page, disable last and next buttons
|
|
Me.PersonRelativePagination.LastPage.Enabled = Not (Me.PageIndex = Me.TotalPages - 1)
|
|
End If
|
|
|
|
If Me._TotalPages < 0 Then ' if the total pages is not determined yet, enable last and next buttons
|
|
Me.PersonRelativePagination.NextPage.Enabled = True
|
|
ElseIf Me._TotalPages = 0 ' if the total pages is determined and it is 0, enable last and next buttons
|
|
Me.PersonRelativePagination.NextPage.Enabled = False
|
|
Else ' if the total pages is the last page, disable last and next buttons
|
|
Me.PersonRelativePagination.NextPage.Enabled = Not (Me.PageIndex = Me.TotalPages - 1)
|
|
End If
|
|
|
|
Me.PersonRelativePagination.PreviousPage.Enabled = Not (Me.PageIndex = 0)
|
|
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SaveData()
|
|
' Save the data from the entire table. Calls each row's Save Data
|
|
' to save their data. This function is called by the Click handler of the
|
|
' Save button. The button handler should Start/Commit/End a transaction.
|
|
|
|
Dim recCtl As PersonRelativeTableControlRow
|
|
For Each recCtl In Me.GetRecordControls()
|
|
|
|
If Me.InDeletedRecordIds(recCtl) Then
|
|
' Delete any pending deletes.
|
|
recCtl.Delete()
|
|
Else
|
|
If recCtl.Visible Then
|
|
recCtl.SaveData()
|
|
End If
|
|
End If
|
|
|
|
Next
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
Me.ResetData = True
|
|
|
|
' Set IsNewRecord to False for all records - since everything has been saved and is no longer "new"
|
|
For Each recCtl In Me.GetRecordControls()
|
|
recCtl.IsNewRecord = False
|
|
Next
|
|
|
|
|
|
' Set DeletedRecordsIds to Nothing since we have deleted all pending deletes.
|
|
Me.DeletedRecordIds = Nothing
|
|
|
|
End Sub
|
|
|
|
Public Overridable Function CreateCompoundJoinFilter() As CompoundFilter
|
|
Dim jFilter As CompoundFilter = New CompoundFilter()
|
|
|
|
Return jFilter
|
|
|
|
End Function
|
|
|
|
|
|
Public Overridable Function CreateOrderBy() As OrderBy
|
|
' The CurrentSortOrder is initialized to the sort order on the
|
|
' Query Wizard. It may be modified by the Click handler for any of
|
|
' the column heading to sort or reverse sort by that column.
|
|
' You can add your own sort order, or modify it on the Query Wizard.
|
|
Return Me.CurrentSortOrder
|
|
End Function
|
|
|
|
Public Overridable Function CreateWhereClause() As WhereClause
|
|
'This CreateWhereClause is used for loading the data.
|
|
PersonRelativeTable.Instance.InnerFilter = Nothing
|
|
Dim wc As WhereClause = New WhereClause()
|
|
|
|
' Compose the WHERE clause consiting of:
|
|
' 1. Static clause defined at design time.
|
|
' 2. User selected search criteria.
|
|
' 3. User selected filter criteria.
|
|
|
|
|
|
' Get the static clause defined at design time on the Table Panel Wizard
|
|
Dim qc As WhereClause = Me.CreateQueryClause()
|
|
If Not(IsNothing(qc)) Then
|
|
wc.iAND(qc)
|
|
End If
|
|
|
|
Return wc
|
|
End Function
|
|
|
|
|
|
Public Overridable Function CreateWhereClause(ByVal searchText as String, ByVal fromSearchControl as String, ByVal AutoTypeAheadSearch as String, ByVal AutoTypeAheadWordSeparators as String) As WhereClause
|
|
' This CreateWhereClause is used for loading list of suggestions for Auto Type-Ahead feature.
|
|
PersonRelativeTable.Instance.InnerFilter = Nothing
|
|
Dim wc As WhereClause = New WhereClause()
|
|
|
|
' Compose the WHERE clause consiting of:
|
|
' 1. Static clause defined at design time.
|
|
' 2. User selected search criteria.
|
|
' 3. User selected filter criteria.
|
|
|
|
Dim appRelativeVirtualPath As String = CType(HttpContext.Current.Session("AppRelativeVirtualPath"), String)
|
|
|
|
' Get the static clause defined at design time on the Table Panel Wizard
|
|
Dim qc As WhereClause = Me.CreateQueryClause()
|
|
If Not(IsNothing(qc)) Then
|
|
wc.iAND(qc)
|
|
End If
|
|
|
|
' Adds clauses if values are selected in Filter controls which are configured in the page.
|
|
|
|
|
|
Return wc
|
|
End Function
|
|
|
|
Protected Overridable Function CreateQueryClause() As WhereClause
|
|
' Create a where clause for the Static clause defined at design time.
|
|
Dim filter As CompoundFilter = New CompoundFilter(CompoundFilter.CompoundingOperators.And_Operator, Nothing)
|
|
Dim whereClause As WhereClause = New WhereClause()
|
|
|
|
filter.AddFilter(New BaseClasses.Data.SignedInUserFilter(BaseClasses.Data.BaseTable.CreateInstance("Persons.Business.PersonRelativeTable, App_Code").TableDefinition.ColumnList.GetByUniqueName("PersonRelative_.PersonalId"), New BaseClasses.Data.IdentifierAliasInfo("PersonRelative_", Nothing), BaseClasses.Data.BaseFilter.ComparisonOperator.EqualsTo, False))
|
|
|
|
whereClause.AddFilter(filter, CompoundFilter.CompoundingOperators.And_Operator)
|
|
|
|
Return whereClause
|
|
|
|
End Function
|
|
|
|
|
|
Public Overridable Function FormatSuggestions(ByVal prefixText As String, ByVal resultItem As String, _
|
|
ByVal columnLength As Integer, ByVal AutoTypeAheadDisplayFoundText As String, _
|
|
ByVal autoTypeAheadSearch As String, ByVal AutoTypeAheadWordSeparators As String, _
|
|
ByVal resultList As ArrayList) As Boolean
|
|
|
|
'Formats the resultItem and adds it to the list of suggestions.
|
|
Dim index As Integer = resultItem.ToUpper(System.Threading.Thread.CurrentThread.CurrentCulture).IndexOf(prefixText.ToUpper(System.Threading.Thread.CurrentThread.CurrentCulture))
|
|
Dim itemToAdd As String = ""
|
|
Dim isFound As Boolean = False
|
|
Dim isAdded As Boolean = False
|
|
' Get the index where prfixt is at the beginning of resultItem. If not found then, index of word which begins with prefixText.
|
|
If InvariantLCase(autoTypeAheadSearch).equals("wordsstartingwithsearchstring") And Not index = 0 Then
|
|
' Expression to find word which contains AutoTypeAheadWordSeparators followed by prefixText
|
|
Dim regex1 As System.Text.RegularExpressions.Regex = new System.Text.RegularExpressions.Regex( AutoTypeAheadWordSeparators + prefixText, System.Text.RegularExpressions.RegexOptions.IgnoreCase)
|
|
If regex1.IsMatch(resultItem) Then
|
|
index = regex1.Match(resultItem).Index
|
|
isFound = True
|
|
End If
|
|
' If the prefixText is found immediatly after white space then starting of the word is found so don not search any further
|
|
If not resultItem(index).ToString() = " " Then
|
|
' Expression to find beginning of the word which contains AutoTypeAheadWordSeparators followed by prefixText
|
|
Dim regex As System.Text.RegularExpressions.Regex = new System.Text.RegularExpressions.Regex("\\S*" + AutoTypeAheadWordSeparators + prefixText, System.Text.RegularExpressions.RegexOptions.IgnoreCase)
|
|
If regex.IsMatch(resultItem) Then
|
|
index = regex.Match(resultItem).Index
|
|
isFound = True
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
' If autoTypeAheadSearch value is wordsstartingwithsearchstring then, extract the substring only if the prefixText is found at the
|
|
' beginning of the resultItem (index = 0) or a word in resultItem is found starts with prefixText.
|
|
If index = 0 Or isFound Or InvariantLCase(autoTypeAheadSearch).Equals("anywhereinstring") then
|
|
If InvariantLCase(AutoTypeAheadDisplayFoundText).equals("atbeginningofmatchedstring") Then
|
|
' Expression to find beginning of the word which contains prefixText
|
|
Dim regex1 As System.Text.RegularExpressions.Regex = new System.Text.RegularExpressions.Regex("\\S*" + prefixText, System.Text.RegularExpressions.RegexOptions.IgnoreCase)
|
|
' Find the beginning of the word which contains prefexText
|
|
If (StringUtils.InvariantLCase(autoTypeAheadSearch).Equals("anywhereinstring") AndAlso regex1.IsMatch(resultItem)) Then
|
|
index = regex1.Match(resultItem).Index
|
|
isFound = True
|
|
End If
|
|
' Display string from the index till end of the string if sub string from index till end is less than columnLength value.
|
|
If Len(resultItem) - index <= columnLength Then
|
|
If index = 0 Then
|
|
itemToAdd = resultItem
|
|
Else
|
|
itemToAdd = "..." & resultItem.Substring(index, Len(resultItem) - index)
|
|
End If
|
|
Else
|
|
If index = 0 Then
|
|
itemToAdd = resultItem.Substring(index, (columnLength - 3)) & "..."
|
|
Else
|
|
'Truncate the string to show only columnLength - 6 characters as begining and trailing "..." has to be appended.
|
|
itemToAdd = "..." & resultItem.Substring(index , columnLength - 6) & "..."
|
|
End If
|
|
End If
|
|
ElseIf InvariantLCase(AutoTypeAheadDisplayFoundText).equals("inmiddleofmatchedstring") Then
|
|
Dim subStringBeginIndex As Integer = CType(columnLength/2, Integer)
|
|
If Len(resultItem) <= columnLength Then
|
|
itemToAdd = resultItem
|
|
Else
|
|
' Sanity check at end of the string
|
|
If index + Len(prefixText) = columnLength Then
|
|
itemToAdd = "..." & resultItem.Substring(index-columnLength,index)
|
|
ElseIf Len(resultItem) - index < subStringBeginIndex Then
|
|
' Display string from the end till columnLength value if, index is closer to the end of the string.
|
|
itemToAdd = "..." & resultItem.Substring(Len(resultItem)-columnLength,Len(resultItem))
|
|
ElseIf index <= subStringBeginIndex Then
|
|
' Sanity chet at beginning of the string
|
|
itemToAdd = resultItem.Substring(0, columnLength) & "..."
|
|
Else
|
|
' Display string containing text before the prefixText occures and text after the prefixText
|
|
itemToAdd = "..." & resultItem.Substring(index - subStringBeginIndex, columnLength) & "..."
|
|
End If
|
|
End If
|
|
ElseIf InvariantLCase(AutoTypeAheadDisplayFoundText).equals("atendofmatchedstring") Then
|
|
' Expression to find ending of the word which contains prefexText
|
|
Dim regex1 As System.Text.RegularExpressions.Regex = new System.Text.RegularExpressions.Regex("\s", System.Text.RegularExpressions.RegexOptions.IgnoreCase)
|
|
' Find the ending of the word which contains prefexText
|
|
If regex1.IsMatch(resultItem, index + 1) Then
|
|
index = regex1.Match(resultItem, index + 1).Index
|
|
Else
|
|
' If the word which contains prefexText is the last word in string, regex1.IsMatch returns false.
|
|
index = resultItem.Length
|
|
End If
|
|
If index > Len(resultItem) Then
|
|
index = Len(resultItem)
|
|
End If
|
|
' If text from beginning of the string till index is less than columnLength value then, display string from the beginning till index.
|
|
If index <= columnLength Then
|
|
if index = Len(resultItem) Then 'Make decision to append "..."
|
|
itemToAdd = resultItem.Substring(0,index)
|
|
Else
|
|
itemToAdd = resultItem.Substring(0,index) & "..."
|
|
End If
|
|
Else
|
|
If index = Len(resultItem) Then
|
|
itemToAdd = "..." & resultItem.Substring(index - (columnLength - 3), (columnLength - 3))
|
|
Else
|
|
'Truncate the string to show only columnLength - 6 characters as begining and trailing "..." has to be appended.
|
|
itemToAdd = "..." & resultItem.Substring(index - (columnLength - 6), columnLength - 6) & "..."
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
' Remove newline character from itemToAdd
|
|
Dim prefixTextIndex As Integer = itemToAdd.IndexOf(prefixText, StringComparison.CurrentCultureIgnoreCase)
|
|
' If itemToAdd contains any newline after the search text then show text only till newline
|
|
Dim regex2 As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex("(" & vbCrLf & "|" & vbLf & ")", System.Text.RegularExpressions.RegexOptions.IgnoreCase)
|
|
Dim newLineIndexAfterPrefix As Integer = -1
|
|
If regex2.IsMatch(itemToAdd, prefixTextIndex) Then
|
|
newLineIndexAfterPrefix = regex2.Match(itemToAdd, prefixTextIndex).Index
|
|
End If
|
|
If (newLineIndexAfterPrefix > -1) Then
|
|
If itemToAdd.EndsWith("...") Then
|
|
itemToAdd = (itemToAdd.Substring(0, newLineIndexAfterPrefix) + "...")
|
|
Else
|
|
itemToAdd = itemToAdd.Substring(0, newLineIndexAfterPrefix)
|
|
End If
|
|
End If
|
|
' If itemToAdd contains any newline before search text then show text which comes after newline
|
|
Dim regex3 As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex("(" & vbCrLf & "|" & vbLf & ")", (System.Text.RegularExpressions.RegexOptions.IgnoreCase Or System.Text.RegularExpressions.RegexOptions.RightToLeft))
|
|
Dim newLineIndexBeforePrefix As Integer = -1
|
|
If regex3.IsMatch(itemToAdd, prefixTextIndex) Then
|
|
newLineIndexBeforePrefix = regex3.Match(itemToAdd, prefixTextIndex).Index
|
|
End If
|
|
If (newLineIndexBeforePrefix > -1) Then
|
|
If itemToAdd.StartsWith("...") Then
|
|
itemToAdd = ("..." + itemToAdd.Substring((newLineIndexBeforePrefix + regex3.Match(itemToAdd, prefixTextIndex).Length)))
|
|
Else
|
|
itemToAdd = itemToAdd.Substring((newLineIndexBeforePrefix + regex3.Match(itemToAdd, prefixTextIndex).Length))
|
|
End If
|
|
End If
|
|
|
|
If Not itemToAdd is nothing AndAlso Not resultList.Contains(itemToAdd) Then
|
|
|
|
resultList.Add(itemToAdd)
|
|
|
|
isAdded = true
|
|
End If
|
|
End If
|
|
Return isAdded
|
|
End Function
|
|
|
|
|
|
Protected Overridable Sub GetPageSize()
|
|
|
|
If Me.PersonRelativePagination.PageSize.Text.Trim <> "" Then
|
|
Try
|
|
'Me.PageSize = Integer.Parse(Me.PersonRelativePagination.PageSize.Text)
|
|
Catch ex As Exception
|
|
End Try
|
|
End If
|
|
End Sub
|
|
|
|
Protected Overridable Sub AddNewRecords()
|
|
|
|
Dim newRecordList As ArrayList = New ArrayList()
|
|
|
|
Dim newUIDataList As System.Collections.Generic.List(Of Hashtable) = New System.Collections.Generic.List(Of Hashtable)()
|
|
|
|
' Loop though all the record controls and if the record control
|
|
' does not have a unique record id set, then create a record
|
|
' and add to the list.
|
|
If Not Me.ResetData Then
|
|
Dim rep As System.Web.UI.WebControls.Repeater = CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "PersonRelativeTableControlRepeater"), System.Web.UI.WebControls.Repeater)
|
|
If rep Is Nothing Then Return
|
|
|
|
Dim repItem As System.Web.UI.WebControls.RepeaterItem
|
|
For Each repItem In rep.Items
|
|
' Loop through all rows in the table, set its DataSource and call DataBind().
|
|
|
|
Dim recControl As PersonRelativeTableControlRow = DirectCast(repItem.FindControl("PersonRelativeTableControlRow"), PersonRelativeTableControlRow)
|
|
|
|
If recControl.Visible AndAlso recControl.IsNewRecord() Then
|
|
|
|
Dim rec As PersonRelativeRecord = New PersonRelativeRecord()
|
|
|
|
If recControl.FLastName.Text <> "" Then
|
|
rec.Parse(recControl.FLastName.Text, PersonRelativeTable.FLastName)
|
|
End If
|
|
If recControl.FName.Text <> "" Then
|
|
rec.Parse(recControl.FName.Text, PersonRelativeTable.FName)
|
|
End If
|
|
If recControl.MLastName.Text <> "" Then
|
|
rec.Parse(recControl.MLastName.Text, PersonRelativeTable.MLastName)
|
|
End If
|
|
If recControl.MName.Text <> "" Then
|
|
rec.Parse(recControl.MName.Text, PersonRelativeTable.MName)
|
|
End If
|
|
If recControl.MOrLastName.Text <> "" Then
|
|
rec.Parse(recControl.MOrLastName.Text, PersonRelativeTable.MOrLastName)
|
|
End If
|
|
If MiscUtils.IsValueSelected(recControl.PersonalId) Then
|
|
rec.Parse(recControl.PersonalId.SelectedItem.Value, PersonRelativeTable.PersonalId)
|
|
End If
|
|
If recControl.RAddress.Text <> "" Then
|
|
rec.Parse(recControl.RAddress.Text, PersonRelativeTable.RAddress)
|
|
End If
|
|
If recControl.RAmphur.Text <> "" Then
|
|
rec.Parse(recControl.RAmphur.Text, PersonRelativeTable.RAmphur)
|
|
End If
|
|
If recControl.RBirthDate.Text <> "" Then
|
|
rec.Parse(recControl.RBirthDate.Text, PersonRelativeTable.RBirthDate)
|
|
End If
|
|
If recControl.Ref1.Text <> "" Then
|
|
rec.Parse(recControl.Ref1.Text, PersonRelativeTable.Ref0)
|
|
End If
|
|
If recControl.RefDate.Text <> "" Then
|
|
rec.Parse(recControl.RefDate.Text, PersonRelativeTable.RefDate)
|
|
End If
|
|
If MiscUtils.IsValueSelected(recControl.RelationId) Then
|
|
rec.Parse(recControl.RelationId.SelectedItem.Value, PersonRelativeTable.RelationId)
|
|
End If
|
|
If recControl.RFirstName.Text <> "" Then
|
|
rec.Parse(recControl.RFirstName.Text, PersonRelativeTable.RFirstName)
|
|
End If
|
|
If recControl.RLastName.Text <> "" Then
|
|
rec.Parse(recControl.RLastName.Text, PersonRelativeTable.RLastName)
|
|
End If
|
|
If recControl.RNationality.Text <> "" Then
|
|
rec.Parse(recControl.RNationality.Text, PersonRelativeTable.RNationality)
|
|
End If
|
|
If recControl.ROrigin.Text <> "" Then
|
|
rec.Parse(recControl.ROrigin.Text, PersonRelativeTable.ROrigin)
|
|
End If
|
|
If recControl.ROrLastName.Text <> "" Then
|
|
rec.Parse(recControl.ROrLastName.Text, PersonRelativeTable.ROrLastName)
|
|
End If
|
|
If recControl.RPreName.Text <> "" Then
|
|
rec.Parse(recControl.RPreName.Text, PersonRelativeTable.RPreName)
|
|
End If
|
|
If recControl.RProvince.Text <> "" Then
|
|
rec.Parse(recControl.RProvince.Text, PersonRelativeTable.RProvince)
|
|
End If
|
|
If recControl.RReligion.Text <> "" Then
|
|
rec.Parse(recControl.RReligion.Text, PersonRelativeTable.RReligion)
|
|
End If
|
|
If recControl.RRemark.Text <> "" Then
|
|
rec.Parse(recControl.RRemark.Text, PersonRelativeTable.RRemark)
|
|
End If
|
|
If MiscUtils.IsValueSelected(recControl.RStatus) Then
|
|
rec.Parse(recControl.RStatus.SelectedItem.Value, PersonRelativeTable.RStatus)
|
|
End If
|
|
If recControl.RStatusDate.Text <> "" Then
|
|
rec.Parse(recControl.RStatusDate.Text, PersonRelativeTable.RStatusDate)
|
|
End If
|
|
If recControl.RStatusRef.Text <> "" Then
|
|
rec.Parse(recControl.RStatusRef.Text, PersonRelativeTable.RStatusRef)
|
|
End If
|
|
newUIDataList.Add(recControl.PreservedUIData())
|
|
newRecordList.Add(rec)
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
|
|
' Add any new record to the list.
|
|
Dim index As Integer = 0
|
|
For index = 1 To Me.AddNewRecord
|
|
|
|
newRecordList.Insert(0, New PersonRelativeRecord())
|
|
newUIDataList.Insert(0, New Hashtable())
|
|
|
|
Next
|
|
Me.AddNewRecord = 0
|
|
|
|
' Finally, add any new records to the DataSource.
|
|
If newRecordList.Count > 0 Then
|
|
|
|
Dim finalList As ArrayList = New ArrayList(Me.DataSource)
|
|
finalList.InsertRange(0, newRecordList)
|
|
|
|
Me.DataSource = DirectCast(finalList.ToArray(GetType(PersonRelativeRecord)), PersonRelativeRecord())
|
|
|
|
End If
|
|
|
|
' Add the existing UI data to this hash table
|
|
If newUIDataList.Count > 0 Then
|
|
Me.UIData.InsertRange(0, newUIDataList)
|
|
End If
|
|
|
|
End Sub
|
|
|
|
|
|
Public Sub AddToDeletedRecordIds(ByVal rec As PersonRelativeTableControlRow)
|
|
If rec.IsNewRecord() Then
|
|
Return
|
|
End If
|
|
|
|
If Not Me.DeletedRecordIds Is Nothing AndAlso Me.DeletedRecordIds.Trim <> "" Then
|
|
Me.DeletedRecordIds &= ","
|
|
End If
|
|
|
|
Me.DeletedRecordIds &= "[" & rec.RecordUniqueId & "]"
|
|
End Sub
|
|
|
|
Protected Overridable Function InDeletedRecordIds(ByVal rec As PersonRelativeTableControlRow) As Boolean
|
|
If Me.DeletedRecordIds Is Nothing OrElse Me.DeletedRecordIds.Trim = "" Then
|
|
Return False
|
|
End If
|
|
|
|
Return Me.DeletedRecordIds.IndexOf("[" & rec.RecordUniqueId & "]") >= 0
|
|
End Function
|
|
|
|
Private _DeletedRecordIds As String
|
|
Public Property DeletedRecordIds() As String
|
|
Get
|
|
Return Me._DeletedRecordIds
|
|
End Get
|
|
Set(ByVal value As String)
|
|
Me._DeletedRecordIds = value
|
|
End Set
|
|
End Property
|
|
|
|
|
|
' Create Set, WhereClause, and Populate Methods
|
|
|
|
Public Overridable Sub SetFLastNameLabel()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetFNameLabel()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetMLastNameLabel()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetMNameLabel()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetMOrLastNameLabel()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetPersonRelativeTableControlCollapsibleRegion()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetPersonRelativeTableControlIcon()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetPersonRelativeTableControlPanelExtender()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRAddressLabel()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRAmphurLabel()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRBirthDateLabel()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRefDateLabel()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRefLabel()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRelationIdLabel1()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRFirstNameLabel()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRLastNameLabel()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRNationalityLabel()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetROriginLabel()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetROrLastNameLabel()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRPreNameLabel()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRProvinceLabel()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRReligionLabel()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRRemarkLabel()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRStatusDateLabel()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRStatusLabel()
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub SetRStatusRefLabel()
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
Protected Overridable Sub Control_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.PreRender
|
|
' PreRender event is raised just before page is being displayed.
|
|
Try
|
|
DbUtils.StartTransaction
|
|
Me.RegisterPostback()
|
|
|
|
If Not Me.Page.ErrorOnPage AndAlso (Me.Page.IsPageRefresh OrElse Me.DataChanged OrElse Me.ResetData) Then
|
|
|
|
|
|
' Re-load the data and update the web page if necessary.
|
|
' This is typically done during a postback (filter, search button, sort, pagination button).
|
|
' In each of the other click handlers, simply set DataChanged to True to reload the data.
|
|
Dim added As Boolean = Me.AddNewRecord > 0
|
|
Me.LoadData()
|
|
Me.DataBind()
|
|
|
|
If added Then
|
|
Me.SetFocusToAddedRow()
|
|
End If
|
|
|
|
End If
|
|
|
|
|
|
|
|
Catch ex As Exception
|
|
Utils.MiscUtils.RegisterJScriptAlert(Me, "BUTTON_CLICK_MESSAGE", ex.Message)
|
|
Finally
|
|
DbUtils.EndTransaction
|
|
End Try
|
|
End Sub
|
|
|
|
'this function sets focus to the first editable element in the new added row in the editable table
|
|
Protected Overridable Sub SetFocusToAddedRow()
|
|
Dim rep As System.Web.UI.WebControls.Repeater = CType(Me.FindControl("PersonRelativeTableControlRepeater"), System.Web.UI.WebControls.Repeater)
|
|
If rep Is Nothing OrElse rep.Items.Count = 0 Then Return
|
|
Dim repItem As System.Web.UI.WebControls.RepeaterItem
|
|
For Each repItem In rep.Items
|
|
'Load scripts to table rows
|
|
Me.Page.LoadFocusScripts(repItem)
|
|
Dim recControl As PersonRelativeTableControlRow = DirectCast(repItem.FindControl("PersonRelativeTableControlRow"), PersonRelativeTableControlRow)
|
|
If recControl.IsNewRecord Then
|
|
For Each field As Control In recControl.Controls
|
|
If field.Visible AndAlso Me.Page.IsControlEditable(field, False) Then
|
|
'set focus on the first editable field in the new row
|
|
field.Focus()
|
|
Dim updPan As UpdatePanel = DirectCast(Me.Page.FindControlRecursively("UpdatePanel1"), UpdatePanel)
|
|
If Not updPan Is Nothing Then updPan.Update()
|
|
Return
|
|
End If
|
|
Next
|
|
Return
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
|
|
Protected Overrides Sub SaveControlsToSession()
|
|
MyBase.SaveControlsToSession()
|
|
|
|
' Save filter controls to values to session.
|
|
|
|
|
|
'Save pagination state to session.
|
|
|
|
|
|
|
|
' Save table control properties to the session.
|
|
If Not Me.CurrentSortOrder Is Nothing Then
|
|
Me.SaveToSession(Me, "Order_By", Me.CurrentSortOrder.ToXmlString())
|
|
End If
|
|
|
|
Me.SaveToSession(Me, "Page_Index", Me.PageIndex.ToString())
|
|
Me.SaveToSession(Me, "Page_Size", Me.PageSize.ToString())
|
|
|
|
Me.SaveToSession(Me, "DeletedRecordIds", Me.DeletedRecordIds)
|
|
|
|
End Sub
|
|
|
|
Protected Sub SaveControlsToSession_Ajax()
|
|
' Save filter controls to values to session.
|
|
|
|
HttpContext.Current.Session("AppRelativeVirtualPath") = Me.Page.AppRelativeVirtualPath
|
|
|
|
End Sub
|
|
|
|
Protected Overrides Sub ClearControlsFromSession()
|
|
MyBase.ClearControlsFromSession()
|
|
|
|
' Clear filter controls values from the session.
|
|
|
|
|
|
' Clear pagination state from session.
|
|
|
|
|
|
|
|
' Clear table properties from the session.
|
|
Me.RemoveFromSession(Me, "Order_By")
|
|
Me.RemoveFromSession(Me, "Page_Index")
|
|
Me.RemoveFromSession(Me, "Page_Size")
|
|
|
|
Me.RemoveFromSession(Me, "DeletedRecordIds")
|
|
|
|
End Sub
|
|
|
|
Protected Overrides Sub LoadViewState(ByVal savedState As Object)
|
|
MyBase.LoadViewState(savedState)
|
|
|
|
Dim orderByStr As String = CType(ViewState("PersonRelativeTableControl_OrderBy"), String)
|
|
|
|
If orderByStr IsNot Nothing AndAlso orderByStr.Trim <> "" Then
|
|
Me.CurrentSortOrder = BaseClasses.Data.OrderBy.FromXmlString(orderByStr)
|
|
Else
|
|
Me.CurrentSortOrder = New OrderBy(True, False)
|
|
End If
|
|
|
|
Dim pageIndex As String = CType(ViewState("Page_Index"), String)
|
|
If pageIndex IsNot Nothing Then
|
|
Me.PageIndex = CInt(pageIndex)
|
|
End If
|
|
|
|
Dim pageSize As String = CType(ViewState("Page_Size"), String)
|
|
If Not pageSize Is Nothing Then
|
|
Me.PageSize = CInt(pageSize)
|
|
End If
|
|
|
|
|
|
|
|
' Load view state for pagination control.
|
|
|
|
Me.DeletedRecordIds = CType(Me.ViewState("DeletedRecordIds"), String)
|
|
|
|
End Sub
|
|
|
|
Protected Overrides Function SaveViewState() As Object
|
|
|
|
If Me.CurrentSortOrder IsNot Nothing Then
|
|
Me.ViewState("PersonRelativeTableControl_OrderBy") = Me.CurrentSortOrder.ToXmlString()
|
|
End If
|
|
|
|
Me.ViewState("Page_Index") = Me.PageIndex
|
|
Me.ViewState("Page_Size") = Me.PageSize
|
|
|
|
Me.ViewState("DeletedRecordIds") = Me.DeletedRecordIds
|
|
|
|
|
|
' Load view state for pagination control.
|
|
|
|
|
|
Return MyBase.SaveViewState()
|
|
End Function
|
|
|
|
' Generate the event handling functions for pagination events.
|
|
|
|
' event handler for ImageButton
|
|
Public Overridable Sub PersonRelativePagination_FirstPage_Click(ByVal sender As Object, ByVal args As ImageClickEventArgs)
|
|
|
|
Try
|
|
|
|
Me.PageIndex = 0
|
|
Me.DataChanged = True
|
|
|
|
Catch ex As Exception
|
|
Me.Page.ErrorOnPage = True
|
|
|
|
' Report the error message to the end user
|
|
Utils.MiscUtils.RegisterJScriptAlert(Me, "BUTTON_CLICK_MESSAGE", ex.Message)
|
|
|
|
Finally
|
|
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
' event handler for ImageButton
|
|
Public Overridable Sub PersonRelativePagination_LastPage_Click(ByVal sender As Object, ByVal args As ImageClickEventArgs)
|
|
|
|
Try
|
|
|
|
Me.DisplayLastPage = True
|
|
Me.DataChanged = True
|
|
|
|
Catch ex As Exception
|
|
Me.Page.ErrorOnPage = True
|
|
|
|
' Report the error message to the end user
|
|
Utils.MiscUtils.RegisterJScriptAlert(Me, "BUTTON_CLICK_MESSAGE", ex.Message)
|
|
|
|
Finally
|
|
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
' event handler for ImageButton
|
|
Public Overridable Sub PersonRelativePagination_NextPage_Click(ByVal sender As Object, ByVal args As ImageClickEventArgs)
|
|
|
|
Try
|
|
|
|
Me.PageIndex += 1
|
|
Me.DataChanged = True
|
|
|
|
Catch ex As Exception
|
|
Me.Page.ErrorOnPage = True
|
|
|
|
' Report the error message to the end user
|
|
Utils.MiscUtils.RegisterJScriptAlert(Me, "BUTTON_CLICK_MESSAGE", ex.Message)
|
|
|
|
Finally
|
|
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
' event handler for LinkButton
|
|
Public Overridable Sub PersonRelativePagination_PageSizeButton_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
|
|
Try
|
|
|
|
Me.DataChanged = True
|
|
|
|
Me.PageSize = Integer.Parse(Me.PersonRelativePagination.PageSize.Text)
|
|
|
|
Me.PageIndex = Integer.Parse(Me.PersonRelativePagination.CurrentPage.Text) - 1
|
|
|
|
Catch ex As Exception
|
|
Me.Page.ErrorOnPage = True
|
|
|
|
' Report the error message to the end user
|
|
Utils.MiscUtils.RegisterJScriptAlert(Me, "BUTTON_CLICK_MESSAGE", ex.Message)
|
|
|
|
Finally
|
|
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
' event handler for ImageButton
|
|
Public Overridable Sub PersonRelativePagination_PreviousPage_Click(ByVal sender As Object, ByVal args As ImageClickEventArgs)
|
|
|
|
Try
|
|
|
|
If Me.PageIndex > 0 Then
|
|
Me.PageIndex -= 1
|
|
Me.DataChanged = True
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
Me.Page.ErrorOnPage = True
|
|
|
|
' Report the error message to the end user
|
|
Utils.MiscUtils.RegisterJScriptAlert(Me, "BUTTON_CLICK_MESSAGE", ex.Message)
|
|
|
|
Finally
|
|
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
|
|
' Generate the event handling functions for sorting events.
|
|
|
|
Public Overridable Sub FLastNameLabel_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
' Sorts by FLastName when clicked.
|
|
|
|
' Get previous sorting state for FLastName.
|
|
|
|
Dim sd As OrderByItem = Me.CurrentSortOrder.Find(PersonRelativeTable.FLastName)
|
|
If sd Is Nothing OrElse (Me.CurrentSortOrder.Items IsNot Nothing Andalso Me.CurrentSortOrder.Items.Length > 1) Then
|
|
' First time sort, so add sort order for FLastName.
|
|
Me.CurrentSortOrder.Reset()
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.FLastName, OrderByItem.OrderDir.Asc)
|
|
Else
|
|
' Previously sorted by FLastName, so just reverse.
|
|
sd.Reverse()
|
|
End If
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub FNameLabel_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
' Sorts by FName when clicked.
|
|
|
|
' Get previous sorting state for FName.
|
|
|
|
Dim sd As OrderByItem = Me.CurrentSortOrder.Find(PersonRelativeTable.FName)
|
|
If sd Is Nothing OrElse (Me.CurrentSortOrder.Items IsNot Nothing Andalso Me.CurrentSortOrder.Items.Length > 1) Then
|
|
' First time sort, so add sort order for FName.
|
|
Me.CurrentSortOrder.Reset()
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.FName, OrderByItem.OrderDir.Asc)
|
|
Else
|
|
' Previously sorted by FName, so just reverse.
|
|
sd.Reverse()
|
|
End If
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub MLastNameLabel_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
' Sorts by MLastName when clicked.
|
|
|
|
' Get previous sorting state for MLastName.
|
|
|
|
Dim sd As OrderByItem = Me.CurrentSortOrder.Find(PersonRelativeTable.MLastName)
|
|
If sd Is Nothing OrElse (Me.CurrentSortOrder.Items IsNot Nothing Andalso Me.CurrentSortOrder.Items.Length > 1) Then
|
|
' First time sort, so add sort order for MLastName.
|
|
Me.CurrentSortOrder.Reset()
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.MLastName, OrderByItem.OrderDir.Asc)
|
|
Else
|
|
' Previously sorted by MLastName, so just reverse.
|
|
sd.Reverse()
|
|
End If
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub MNameLabel_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
' Sorts by MName when clicked.
|
|
|
|
' Get previous sorting state for MName.
|
|
|
|
Dim sd As OrderByItem = Me.CurrentSortOrder.Find(PersonRelativeTable.MName)
|
|
If sd Is Nothing OrElse (Me.CurrentSortOrder.Items IsNot Nothing Andalso Me.CurrentSortOrder.Items.Length > 1) Then
|
|
' First time sort, so add sort order for MName.
|
|
Me.CurrentSortOrder.Reset()
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.MName, OrderByItem.OrderDir.Asc)
|
|
Else
|
|
' Previously sorted by MName, so just reverse.
|
|
sd.Reverse()
|
|
End If
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub MOrLastNameLabel_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
' Sorts by MOrLastName when clicked.
|
|
|
|
' Get previous sorting state for MOrLastName.
|
|
|
|
Dim sd As OrderByItem = Me.CurrentSortOrder.Find(PersonRelativeTable.MOrLastName)
|
|
If sd Is Nothing OrElse (Me.CurrentSortOrder.Items IsNot Nothing Andalso Me.CurrentSortOrder.Items.Length > 1) Then
|
|
' First time sort, so add sort order for MOrLastName.
|
|
Me.CurrentSortOrder.Reset()
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.MOrLastName, OrderByItem.OrderDir.Asc)
|
|
Else
|
|
' Previously sorted by MOrLastName, so just reverse.
|
|
sd.Reverse()
|
|
End If
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub RAddressLabel_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
' Sorts by RAddress when clicked.
|
|
|
|
' Get previous sorting state for RAddress.
|
|
|
|
Dim sd As OrderByItem = Me.CurrentSortOrder.Find(PersonRelativeTable.RAddress)
|
|
If sd Is Nothing OrElse (Me.CurrentSortOrder.Items IsNot Nothing Andalso Me.CurrentSortOrder.Items.Length > 1) Then
|
|
' First time sort, so add sort order for RAddress.
|
|
Me.CurrentSortOrder.Reset()
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.RAddress, OrderByItem.OrderDir.Asc)
|
|
Else
|
|
' Previously sorted by RAddress, so just reverse.
|
|
sd.Reverse()
|
|
End If
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub RAmphurLabel_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
' Sorts by RAmphur when clicked.
|
|
|
|
' Get previous sorting state for RAmphur.
|
|
|
|
Dim sd As OrderByItem = Me.CurrentSortOrder.Find(PersonRelativeTable.RAmphur)
|
|
If sd Is Nothing OrElse (Me.CurrentSortOrder.Items IsNot Nothing Andalso Me.CurrentSortOrder.Items.Length > 1) Then
|
|
' First time sort, so add sort order for RAmphur.
|
|
Me.CurrentSortOrder.Reset()
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.RAmphur, OrderByItem.OrderDir.Asc)
|
|
Else
|
|
' Previously sorted by RAmphur, so just reverse.
|
|
sd.Reverse()
|
|
End If
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub RBirthDateLabel_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
' Sorts by RBirthDate when clicked.
|
|
|
|
' Get previous sorting state for RBirthDate.
|
|
|
|
Dim sd As OrderByItem = Me.CurrentSortOrder.Find(PersonRelativeTable.RBirthDate)
|
|
If sd Is Nothing OrElse (Me.CurrentSortOrder.Items IsNot Nothing Andalso Me.CurrentSortOrder.Items.Length > 1) Then
|
|
' First time sort, so add sort order for RBirthDate.
|
|
Me.CurrentSortOrder.Reset()
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.RBirthDate, OrderByItem.OrderDir.Asc)
|
|
Else
|
|
' Previously sorted by RBirthDate, so just reverse.
|
|
sd.Reverse()
|
|
End If
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub RefDateLabel_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
' Sorts by RefDate when clicked.
|
|
|
|
' Get previous sorting state for RefDate.
|
|
|
|
Dim sd As OrderByItem = Me.CurrentSortOrder.Find(PersonRelativeTable.RefDate)
|
|
If sd Is Nothing OrElse (Me.CurrentSortOrder.Items IsNot Nothing Andalso Me.CurrentSortOrder.Items.Length > 1) Then
|
|
' First time sort, so add sort order for RefDate.
|
|
Me.CurrentSortOrder.Reset()
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.RefDate, OrderByItem.OrderDir.Asc)
|
|
Else
|
|
' Previously sorted by RefDate, so just reverse.
|
|
sd.Reverse()
|
|
End If
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub RefLabel_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
' Sorts by Ref when clicked.
|
|
|
|
' Get previous sorting state for Ref.
|
|
|
|
Dim sd As OrderByItem = Me.CurrentSortOrder.Find(PersonRelativeTable.Ref0)
|
|
If sd Is Nothing OrElse (Me.CurrentSortOrder.Items IsNot Nothing Andalso Me.CurrentSortOrder.Items.Length > 1) Then
|
|
' First time sort, so add sort order for Ref.
|
|
Me.CurrentSortOrder.Reset()
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.Ref0, OrderByItem.OrderDir.Asc)
|
|
Else
|
|
' Previously sorted by Ref, so just reverse.
|
|
sd.Reverse()
|
|
End If
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub RelationIdLabel1_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
' Sorts by RelationId when clicked.
|
|
|
|
' Get previous sorting state for RelationId.
|
|
|
|
Dim sd As OrderByItem = Me.CurrentSortOrder.Find(PersonRelativeTable.RelationId)
|
|
If sd Is Nothing OrElse (Me.CurrentSortOrder.Items IsNot Nothing Andalso Me.CurrentSortOrder.Items.Length > 1) Then
|
|
' First time sort, so add sort order for RelationId.
|
|
Me.CurrentSortOrder.Reset()
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.RelationId, OrderByItem.OrderDir.Asc)
|
|
Else
|
|
' Previously sorted by RelationId, so just reverse.
|
|
sd.Reverse()
|
|
End If
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub RFirstNameLabel_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
' Sorts by RFirstName when clicked.
|
|
|
|
' Get previous sorting state for RFirstName.
|
|
|
|
Dim sd As OrderByItem = Me.CurrentSortOrder.Find(PersonRelativeTable.RFirstName)
|
|
If sd Is Nothing OrElse (Me.CurrentSortOrder.Items IsNot Nothing Andalso Me.CurrentSortOrder.Items.Length > 1) Then
|
|
' First time sort, so add sort order for RFirstName.
|
|
Me.CurrentSortOrder.Reset()
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.RFirstName, OrderByItem.OrderDir.Asc)
|
|
Else
|
|
' Previously sorted by RFirstName, so just reverse.
|
|
sd.Reverse()
|
|
End If
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub RLastNameLabel_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
' Sorts by RLastName when clicked.
|
|
|
|
' Get previous sorting state for RLastName.
|
|
|
|
Dim sd As OrderByItem = Me.CurrentSortOrder.Find(PersonRelativeTable.RLastName)
|
|
If sd Is Nothing OrElse (Me.CurrentSortOrder.Items IsNot Nothing Andalso Me.CurrentSortOrder.Items.Length > 1) Then
|
|
' First time sort, so add sort order for RLastName.
|
|
Me.CurrentSortOrder.Reset()
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.RLastName, OrderByItem.OrderDir.Asc)
|
|
Else
|
|
' Previously sorted by RLastName, so just reverse.
|
|
sd.Reverse()
|
|
End If
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub RNationalityLabel_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
' Sorts by RNationality when clicked.
|
|
|
|
' Get previous sorting state for RNationality.
|
|
|
|
Dim sd As OrderByItem = Me.CurrentSortOrder.Find(PersonRelativeTable.RNationality)
|
|
If sd Is Nothing OrElse (Me.CurrentSortOrder.Items IsNot Nothing Andalso Me.CurrentSortOrder.Items.Length > 1) Then
|
|
' First time sort, so add sort order for RNationality.
|
|
Me.CurrentSortOrder.Reset()
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.RNationality, OrderByItem.OrderDir.Asc)
|
|
Else
|
|
' Previously sorted by RNationality, so just reverse.
|
|
sd.Reverse()
|
|
End If
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub ROriginLabel_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
' Sorts by ROrigin when clicked.
|
|
|
|
' Get previous sorting state for ROrigin.
|
|
|
|
Dim sd As OrderByItem = Me.CurrentSortOrder.Find(PersonRelativeTable.ROrigin)
|
|
If sd Is Nothing OrElse (Me.CurrentSortOrder.Items IsNot Nothing Andalso Me.CurrentSortOrder.Items.Length > 1) Then
|
|
' First time sort, so add sort order for ROrigin.
|
|
Me.CurrentSortOrder.Reset()
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.ROrigin, OrderByItem.OrderDir.Asc)
|
|
Else
|
|
' Previously sorted by ROrigin, so just reverse.
|
|
sd.Reverse()
|
|
End If
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub ROrLastNameLabel_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
' Sorts by ROrLastName when clicked.
|
|
|
|
' Get previous sorting state for ROrLastName.
|
|
|
|
Dim sd As OrderByItem = Me.CurrentSortOrder.Find(PersonRelativeTable.ROrLastName)
|
|
If sd Is Nothing OrElse (Me.CurrentSortOrder.Items IsNot Nothing Andalso Me.CurrentSortOrder.Items.Length > 1) Then
|
|
' First time sort, so add sort order for ROrLastName.
|
|
Me.CurrentSortOrder.Reset()
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.ROrLastName, OrderByItem.OrderDir.Asc)
|
|
Else
|
|
' Previously sorted by ROrLastName, so just reverse.
|
|
sd.Reverse()
|
|
End If
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub RPreNameLabel_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
' Sorts by RPreName when clicked.
|
|
|
|
' Get previous sorting state for RPreName.
|
|
|
|
Dim sd As OrderByItem = Me.CurrentSortOrder.Find(PersonRelativeTable.RPreName)
|
|
If sd Is Nothing OrElse (Me.CurrentSortOrder.Items IsNot Nothing Andalso Me.CurrentSortOrder.Items.Length > 1) Then
|
|
' First time sort, so add sort order for RPreName.
|
|
Me.CurrentSortOrder.Reset()
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.RPreName, OrderByItem.OrderDir.Asc)
|
|
Else
|
|
' Previously sorted by RPreName, so just reverse.
|
|
sd.Reverse()
|
|
End If
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub RProvinceLabel_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
' Sorts by RProvince when clicked.
|
|
|
|
' Get previous sorting state for RProvince.
|
|
|
|
Dim sd As OrderByItem = Me.CurrentSortOrder.Find(PersonRelativeTable.RProvince)
|
|
If sd Is Nothing OrElse (Me.CurrentSortOrder.Items IsNot Nothing Andalso Me.CurrentSortOrder.Items.Length > 1) Then
|
|
' First time sort, so add sort order for RProvince.
|
|
Me.CurrentSortOrder.Reset()
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.RProvince, OrderByItem.OrderDir.Asc)
|
|
Else
|
|
' Previously sorted by RProvince, so just reverse.
|
|
sd.Reverse()
|
|
End If
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub RReligionLabel_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
' Sorts by RReligion when clicked.
|
|
|
|
' Get previous sorting state for RReligion.
|
|
|
|
Dim sd As OrderByItem = Me.CurrentSortOrder.Find(PersonRelativeTable.RReligion)
|
|
If sd Is Nothing OrElse (Me.CurrentSortOrder.Items IsNot Nothing Andalso Me.CurrentSortOrder.Items.Length > 1) Then
|
|
' First time sort, so add sort order for RReligion.
|
|
Me.CurrentSortOrder.Reset()
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.RReligion, OrderByItem.OrderDir.Asc)
|
|
Else
|
|
' Previously sorted by RReligion, so just reverse.
|
|
sd.Reverse()
|
|
End If
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub RRemarkLabel_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
' Sorts by RRemark when clicked.
|
|
|
|
' Get previous sorting state for RRemark.
|
|
|
|
Dim sd As OrderByItem = Me.CurrentSortOrder.Find(PersonRelativeTable.RRemark)
|
|
If sd Is Nothing OrElse (Me.CurrentSortOrder.Items IsNot Nothing Andalso Me.CurrentSortOrder.Items.Length > 1) Then
|
|
' First time sort, so add sort order for RRemark.
|
|
Me.CurrentSortOrder.Reset()
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.RRemark, OrderByItem.OrderDir.Asc)
|
|
Else
|
|
' Previously sorted by RRemark, so just reverse.
|
|
sd.Reverse()
|
|
End If
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub RStatusDateLabel_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
' Sorts by RStatusDate when clicked.
|
|
|
|
' Get previous sorting state for RStatusDate.
|
|
|
|
Dim sd As OrderByItem = Me.CurrentSortOrder.Find(PersonRelativeTable.RStatusDate)
|
|
If sd Is Nothing OrElse (Me.CurrentSortOrder.Items IsNot Nothing Andalso Me.CurrentSortOrder.Items.Length > 1) Then
|
|
' First time sort, so add sort order for RStatusDate.
|
|
Me.CurrentSortOrder.Reset()
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.RStatusDate, OrderByItem.OrderDir.Asc)
|
|
Else
|
|
' Previously sorted by RStatusDate, so just reverse.
|
|
sd.Reverse()
|
|
End If
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub RStatusLabel_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
' Sorts by RStatus when clicked.
|
|
|
|
' Get previous sorting state for RStatus.
|
|
|
|
Dim sd As OrderByItem = Me.CurrentSortOrder.Find(PersonRelativeTable.RStatus)
|
|
If sd Is Nothing OrElse (Me.CurrentSortOrder.Items IsNot Nothing Andalso Me.CurrentSortOrder.Items.Length > 1) Then
|
|
' First time sort, so add sort order for RStatus.
|
|
Me.CurrentSortOrder.Reset()
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.RStatus, OrderByItem.OrderDir.Asc)
|
|
Else
|
|
' Previously sorted by RStatus, so just reverse.
|
|
sd.Reverse()
|
|
End If
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
End Sub
|
|
|
|
Public Overridable Sub RStatusRefLabel_Click(ByVal sender As Object, ByVal args As EventArgs)
|
|
' Sorts by RStatusRef when clicked.
|
|
|
|
' Get previous sorting state for RStatusRef.
|
|
|
|
Dim sd As OrderByItem = Me.CurrentSortOrder.Find(PersonRelativeTable.RStatusRef)
|
|
If sd Is Nothing OrElse (Me.CurrentSortOrder.Items IsNot Nothing Andalso Me.CurrentSortOrder.Items.Length > 1) Then
|
|
' First time sort, so add sort order for RStatusRef.
|
|
Me.CurrentSortOrder.Reset()
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.RStatusRef, OrderByItem.OrderDir.Asc)
|
|
Else
|
|
' Previously sorted by RStatusRef, so just reverse.
|
|
sd.Reverse()
|
|
End If
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
End Sub
|
|
|
|
|
|
' Generate the event handling functions for button events.
|
|
|
|
' event handler for ImageButton
|
|
Public Overridable Sub PersonRelativeAddButton_Click(ByVal sender As Object, ByVal args As ImageClickEventArgs)
|
|
|
|
Try
|
|
' Enclose all database retrieval/update code within a Transaction boundary
|
|
DbUtils.StartTransaction
|
|
|
|
Me.AddNewRecord = 1
|
|
Me.DataChanged = True
|
|
|
|
Catch ex As Exception
|
|
' Upon error, rollback the transaction
|
|
Me.Page.RollBackTransaction(sender)
|
|
Me.Page.ErrorOnPage = True
|
|
|
|
' Report the error message to the end user
|
|
Utils.MiscUtils.RegisterJScriptAlert(Me, "BUTTON_CLICK_MESSAGE", ex.Message)
|
|
|
|
Finally
|
|
DbUtils.EndTransaction
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
' event handler for ImageButton
|
|
Public Overridable Sub PersonRelativeDeleteButton_Click(ByVal sender As Object, ByVal args As ImageClickEventArgs)
|
|
|
|
Try
|
|
' Enclose all database retrieval/update code within a Transaction boundary
|
|
DbUtils.StartTransaction
|
|
|
|
If(Not Me.Page.IsPageRefresh) Then
|
|
|
|
Me.DeleteSelectedRecords(True)
|
|
Me.SetFormulaControls()
|
|
|
|
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
' Upon error, rollback the transaction
|
|
Me.Page.RollBackTransaction(sender)
|
|
Me.Page.ErrorOnPage = True
|
|
|
|
' Report the error message to the end user
|
|
Utils.MiscUtils.RegisterJScriptAlert(Me, "BUTTON_CLICK_MESSAGE", ex.Message)
|
|
|
|
Finally
|
|
DbUtils.EndTransaction
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
' event handler for ImageButton
|
|
Public Overridable Sub PersonRelativeEditButton_Click(ByVal sender As Object, ByVal args As ImageClickEventArgs)
|
|
|
|
' The redirect URL is set on the Properties, Custom Properties or Actions.
|
|
' The ModifyRedirectURL call resolves the parameters before the
|
|
' Response.Redirect redirects the page to the URL.
|
|
' Any code after the Response.Redirect call will not be executed, since the page is
|
|
' redirected to the URL.
|
|
|
|
|
|
Dim url As String = "../PersonRelative/EditPersonRelative.aspx?PersonRelative={PK}"
|
|
|
|
Dim shouldRedirect As Boolean = True
|
|
Dim TargetKey As String = Nothing
|
|
Dim DFKA As String = TargetKey
|
|
Dim id As String = DFKA
|
|
Dim value As String = id
|
|
|
|
Try
|
|
' Enclose all database retrieval/update code within a Transaction boundary
|
|
DbUtils.StartTransaction
|
|
|
|
url = Me.ModifyRedirectUrl(url, "",False)
|
|
url = Me.Page.ModifyRedirectUrl(url, "",False)
|
|
|
|
Catch ex As Exception
|
|
' Upon error, rollback the transaction
|
|
Me.Page.RollBackTransaction(sender)
|
|
shouldRedirect = False
|
|
Me.Page.ErrorOnPage = True
|
|
|
|
' Report the error message to the end user
|
|
Utils.MiscUtils.RegisterJScriptAlert(Me, "BUTTON_CLICK_MESSAGE", ex.Message)
|
|
|
|
Finally
|
|
DbUtils.EndTransaction
|
|
End Try
|
|
If shouldRedirect Then
|
|
Me.Page.ShouldSaveControlsToSession = True
|
|
Me.Page.Response.Redirect(url)
|
|
ElseIf Not TargetKey Is Nothing AndAlso _
|
|
Not shouldRedirect Then
|
|
Me.Page.ShouldSaveControlsToSession = True
|
|
Me.Page.CloseWindow(True)
|
|
|
|
End If
|
|
End Sub
|
|
|
|
' event handler for ImageButton
|
|
Public Overridable Sub PersonRelativeRefreshButton_Click(ByVal sender As Object, ByVal args As ImageClickEventArgs)
|
|
|
|
Try
|
|
|
|
Dim PersonRelativeTableControlObj as PersonRelativeTableControl = DirectCast(Me.Page.FindControlRecursively("PersonRelativeTableControl"), PersonRelativeTableControl)
|
|
PersonRelativeTableControlObj.ResetData = True
|
|
|
|
PersonRelativeTableControlObj.RemoveFromSession(PersonRelativeTableControlObj, "DeletedRecordIds")
|
|
PersonRelativeTableControlObj.DeletedRecordIds = Nothing
|
|
|
|
Catch ex As Exception
|
|
Me.Page.ErrorOnPage = True
|
|
|
|
' Report the error message to the end user
|
|
Utils.MiscUtils.RegisterJScriptAlert(Me, "BUTTON_CLICK_MESSAGE", ex.Message)
|
|
|
|
Finally
|
|
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
' event handler for ImageButton
|
|
Public Overridable Sub PersonRelativeResetButton_Click(ByVal sender As Object, ByVal args As ImageClickEventArgs)
|
|
|
|
Try
|
|
|
|
Me.CurrentSortOrder.Reset()
|
|
If Me.InSession(Me, "Order_By") Then
|
|
Me.CurrentSortOrder = OrderBy.FromXmlString(Me.GetFromSession(Me, "Order_By", Nothing))
|
|
Else
|
|
Me.CurrentSortOrder = New OrderBy(True, False)
|
|
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.RelationId, OrderByItem.OrderDir.Asc)
|
|
|
|
Me.CurrentSortOrder.Add(PersonRelativeTable.RBirthDate, OrderByItem.OrderDir.Asc)
|
|
|
|
|
|
End If
|
|
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
|
|
Catch ex As Exception
|
|
Me.Page.ErrorOnPage = True
|
|
|
|
' Report the error message to the end user
|
|
Utils.MiscUtils.RegisterJScriptAlert(Me, "BUTTON_CLICK_MESSAGE", ex.Message)
|
|
|
|
Finally
|
|
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
' event handler for ImageButton
|
|
Public Overridable Sub PersonRelativeSaveButton_Click(ByVal sender As Object, ByVal args As ImageClickEventArgs)
|
|
|
|
Try
|
|
' Enclose all database retrieval/update code within a Transaction boundary
|
|
DbUtils.StartTransaction
|
|
|
|
|
|
If (Not Me.Page.IsPageRefresh) Then
|
|
Me.SaveData()
|
|
End If
|
|
|
|
Me.Page.CommitTransaction(sender)
|
|
' Set IsNewRecord to False for all records - since everything has been saved and is no longer "new"
|
|
Dim recCtl As PersonRelativeTableControlRow
|
|
For Each recCtl in Me.GetRecordControls()
|
|
|
|
recCtl.IsNewRecord = False
|
|
Next
|
|
|
|
|
|
' Set DeletedRecordsIds to Nothing since we have deleted all pending deletes.
|
|
|
|
Me.DeletedRecordIds = Nothing
|
|
|
|
Catch ex As Exception
|
|
' Upon error, rollback the transaction
|
|
Me.Page.RollBackTransaction(sender)
|
|
Me.Page.ErrorOnPage = True
|
|
|
|
' Report the error message to the end user
|
|
Utils.MiscUtils.RegisterJScriptAlert(Me, "BUTTON_CLICK_MESSAGE", ex.Message)
|
|
|
|
Finally
|
|
DbUtils.EndTransaction
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
' Generate the event handling functions for filter and search events.
|
|
|
|
|
|
' Generate the event handling functions for others
|
|
|
|
|
|
Private _UIData As New System.Collections.Generic.List(Of Hashtable)
|
|
Public Property UIData() As System.Collections.Generic.List(Of Hashtable)
|
|
Get
|
|
Return Me._UIData
|
|
End Get
|
|
Set(ByVal value As System.Collections.Generic.List(Of Hashtable))
|
|
Me._UIData = value
|
|
End Set
|
|
End Property
|
|
|
|
' pagination properties
|
|
Protected _PageSize As Integer
|
|
Public Property PageSize() As Integer
|
|
Get
|
|
Return Me._PageSize
|
|
End Get
|
|
Set(ByVal value As Integer)
|
|
Me._PageSize = value
|
|
End Set
|
|
End Property
|
|
|
|
Protected _PageIndex As Integer
|
|
Public Property PageIndex() As Integer
|
|
Get
|
|
' Return the PageIndex
|
|
Return Me._PageIndex
|
|
End Get
|
|
Set(ByVal value As Integer)
|
|
Me._PageIndex = value
|
|
End Set
|
|
End Property
|
|
|
|
Protected _TotalRecords As Integer = -1
|
|
Public Property TotalRecords() As Integer
|
|
Get
|
|
If _TotalRecords < 0
|
|
_TotalRecords = PersonRelativeTable.GetRecordCount(CreateCompoundJoinFilter(), CreateWhereClause())
|
|
End If
|
|
Return Me._TotalRecords
|
|
End Get
|
|
Set(ByVal value As Integer)
|
|
If Me.PageSize > 0 Then
|
|
|
|
Me.TotalPages = CInt(Math.Ceiling(value / Me.PageSize))
|
|
|
|
End If
|
|
Me._TotalRecords = value
|
|
End Set
|
|
End Property
|
|
|
|
|
|
|
|
Protected _TotalPages As Integer = -1
|
|
Public Property TotalPages() As Integer
|
|
Get
|
|
If _TotalPages < 0 Then
|
|
|
|
Me.TotalPages = CInt(Math.Ceiling(TotalRecords / Me.PageSize))
|
|
|
|
End If
|
|
Return Me._TotalPages
|
|
End Get
|
|
Set(ByVal value As Integer)
|
|
Me._TotalPages = value
|
|
End Set
|
|
End Property
|
|
|
|
Protected _DisplayLastPage As Boolean
|
|
Public Property DisplayLastPage() As Boolean
|
|
Get
|
|
Return Me._DisplayLastPage
|
|
End Get
|
|
Set(ByVal value As Boolean)
|
|
Me._DisplayLastPage = value
|
|
End Set
|
|
End Property
|
|
|
|
Private _DataChanged As Boolean = False
|
|
Public Property DataChanged() As Boolean
|
|
Get
|
|
Return Me._DataChanged
|
|
End Get
|
|
Set(ByVal value As Boolean)
|
|
Me._DataChanged = value
|
|
End Set
|
|
End Property
|
|
|
|
Private _ResetData As Boolean = False
|
|
Public Property ResetData() As Boolean
|
|
Get
|
|
Return Me._ResetData
|
|
End Get
|
|
Set(ByVal value As Boolean)
|
|
Me._ResetData = value
|
|
End Set
|
|
End Property
|
|
|
|
Private _AddNewRecord As Integer = 0
|
|
Public Property AddNewRecord() As Integer
|
|
Get
|
|
Return Me._AddNewRecord
|
|
End Get
|
|
Set(ByVal value As Integer)
|
|
Me._AddNewRecord = value
|
|
End Set
|
|
End Property
|
|
|
|
|
|
Private _CurrentSortOrder As OrderBy = Nothing
|
|
Public Property CurrentSortOrder() As OrderBy
|
|
Get
|
|
Return Me._CurrentSortOrder
|
|
End Get
|
|
Set(ByVal value As BaseClasses.Data.OrderBy)
|
|
Me._CurrentSortOrder = value
|
|
End Set
|
|
End Property
|
|
|
|
Private _DataSource() As PersonRelativeRecord = Nothing
|
|
Public Property DataSource() As PersonRelativeRecord ()
|
|
Get
|
|
Return Me._DataSource
|
|
End Get
|
|
Set(ByVal value() As PersonRelativeRecord)
|
|
Me._DataSource = value
|
|
End Set
|
|
End Property
|
|
|
|
#Region "Helper Properties"
|
|
|
|
Public ReadOnly Property FLastNameLabel() As System.Web.UI.WebControls.LinkButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "FLastNameLabel"), System.Web.UI.WebControls.LinkButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property FNameLabel() As System.Web.UI.WebControls.LinkButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "FNameLabel"), System.Web.UI.WebControls.LinkButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property MLastNameLabel() As System.Web.UI.WebControls.LinkButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "MLastNameLabel"), System.Web.UI.WebControls.LinkButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property MNameLabel() As System.Web.UI.WebControls.LinkButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "MNameLabel"), System.Web.UI.WebControls.LinkButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property MOrLastNameLabel() As System.Web.UI.WebControls.LinkButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "MOrLastNameLabel"), System.Web.UI.WebControls.LinkButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property PersonRelativeAddButton() As System.Web.UI.WebControls.ImageButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "PersonRelativeAddButton"), System.Web.UI.WebControls.ImageButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property PersonRelativeDeleteButton() As System.Web.UI.WebControls.ImageButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "PersonRelativeDeleteButton"), System.Web.UI.WebControls.ImageButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property PersonRelativeEditButton() As System.Web.UI.WebControls.ImageButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "PersonRelativeEditButton"), System.Web.UI.WebControls.ImageButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property PersonRelativePagination() As Persons.UI.IPagination
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "PersonRelativePagination"), Persons.UI.IPagination)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property PersonRelativeRefreshButton() As System.Web.UI.WebControls.ImageButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "PersonRelativeRefreshButton"), System.Web.UI.WebControls.ImageButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property PersonRelativeResetButton() As System.Web.UI.WebControls.ImageButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "PersonRelativeResetButton"), System.Web.UI.WebControls.ImageButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property PersonRelativeSaveButton() As System.Web.UI.WebControls.ImageButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "PersonRelativeSaveButton"), System.Web.UI.WebControls.ImageButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property PersonRelativeTableControlCollapsibleRegion() As System.Web.UI.WebControls.Panel
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "PersonRelativeTableControlCollapsibleRegion"), System.Web.UI.WebControls.Panel)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property PersonRelativeTableControlIcon() As System.Web.UI.WebControls.ImageButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "PersonRelativeTableControlIcon"), System.Web.UI.WebControls.ImageButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property PersonRelativeTableControlPanelExtender() As AjaxControlToolkit.CollapsiblePanelExtender
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "PersonRelativeTableControlPanelExtender"), AjaxControlToolkit.CollapsiblePanelExtender)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property PersonRelativeTitle() As System.Web.UI.WebControls.Literal
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "PersonRelativeTitle"), System.Web.UI.WebControls.Literal)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property PersonRelativeToggleAll() As System.Web.UI.WebControls.CheckBox
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "PersonRelativeToggleAll"), System.Web.UI.WebControls.CheckBox)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RAddressLabel() As System.Web.UI.WebControls.LinkButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RAddressLabel"), System.Web.UI.WebControls.LinkButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RAmphurLabel() As System.Web.UI.WebControls.LinkButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RAmphurLabel"), System.Web.UI.WebControls.LinkButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RBirthDateLabel() As System.Web.UI.WebControls.LinkButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RBirthDateLabel"), System.Web.UI.WebControls.LinkButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RefDateLabel() As System.Web.UI.WebControls.LinkButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RefDateLabel"), System.Web.UI.WebControls.LinkButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RefLabel() As System.Web.UI.WebControls.LinkButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RefLabel"), System.Web.UI.WebControls.LinkButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RelationIdLabel1() As System.Web.UI.WebControls.LinkButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RelationIdLabel1"), System.Web.UI.WebControls.LinkButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RFirstNameLabel() As System.Web.UI.WebControls.LinkButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RFirstNameLabel"), System.Web.UI.WebControls.LinkButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RLastNameLabel() As System.Web.UI.WebControls.LinkButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RLastNameLabel"), System.Web.UI.WebControls.LinkButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RNationalityLabel() As System.Web.UI.WebControls.LinkButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RNationalityLabel"), System.Web.UI.WebControls.LinkButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property ROriginLabel() As System.Web.UI.WebControls.LinkButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "ROriginLabel"), System.Web.UI.WebControls.LinkButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property ROrLastNameLabel() As System.Web.UI.WebControls.LinkButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "ROrLastNameLabel"), System.Web.UI.WebControls.LinkButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RPreNameLabel() As System.Web.UI.WebControls.LinkButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RPreNameLabel"), System.Web.UI.WebControls.LinkButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RProvinceLabel() As System.Web.UI.WebControls.LinkButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RProvinceLabel"), System.Web.UI.WebControls.LinkButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RReligionLabel() As System.Web.UI.WebControls.LinkButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RReligionLabel"), System.Web.UI.WebControls.LinkButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RRemarkLabel() As System.Web.UI.WebControls.LinkButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RRemarkLabel"), System.Web.UI.WebControls.LinkButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RStatusDateLabel() As System.Web.UI.WebControls.LinkButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RStatusDateLabel"), System.Web.UI.WebControls.LinkButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RStatusLabel() As System.Web.UI.WebControls.LinkButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RStatusLabel"), System.Web.UI.WebControls.LinkButton)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property RStatusRefLabel() As System.Web.UI.WebControls.LinkButton
|
|
Get
|
|
Return CType(BaseClasses.Utils.MiscUtils.FindControlRecursively(Me, "RStatusRefLabel"), System.Web.UI.WebControls.LinkButton)
|
|
End Get
|
|
End Property
|
|
|
|
#End Region
|
|
|
|
#Region "Helper Functions"
|
|
|
|
Public Overrides Overloads Function ModifyRedirectUrl(url As String, arg As String, ByVal bEncrypt As Boolean) As String
|
|
Return Me.Page.EvaluateExpressions(url, arg, bEncrypt, Me)
|
|
End Function
|
|
|
|
Public Overrides Overloads Function EvaluateExpressions(url As String, arg As String, ByVal bEncrypt As Boolean) As String
|
|
Dim needToProcess As Boolean = AreAnyUrlParametersForMe(url, arg)
|
|
If (needToProcess) Then
|
|
Dim recCtl As PersonRelativeTableControlRow = Me.GetSelectedRecordControl()
|
|
If recCtl Is Nothing AndAlso url.IndexOf("{") >= 0 Then
|
|
' Localization.
|
|
Throw New Exception(Page.GetResourceValue("Err:NoRecSelected", "Persons"))
|
|
End If
|
|
Dim rec As PersonRelativeRecord = Nothing
|
|
If recCtl IsNot Nothing Then
|
|
rec = recCtl.GetRecord()
|
|
End If
|
|
Return EvaluateExpressions(url, arg, rec, bEncrypt)
|
|
End If
|
|
Return url
|
|
End Function
|
|
|
|
Public Overridable Function GetSelectedRecordIndex() As Integer
|
|
Dim counter As Integer = 0
|
|
Dim recControl As PersonRelativeTableControlRow
|
|
For Each recControl In Me.GetRecordControls()
|
|
If recControl.PersonRelativeRecordRowSelection.Checked Then
|
|
Return counter
|
|
End If
|
|
counter += 1
|
|
Next
|
|
Return -1
|
|
End Function
|
|
|
|
Public Overridable Function GetSelectedRecordControl() As PersonRelativeTableControlRow
|
|
Dim selectedList() As PersonRelativeTableControlRow = Me.GetSelectedRecordControls()
|
|
If selectedList.Length = 0 Then
|
|
Return Nothing
|
|
End If
|
|
Return selectedList(0)
|
|
|
|
End Function
|
|
|
|
Public Overridable Function GetSelectedRecordControls() As PersonRelativeTableControlRow()
|
|
|
|
Dim selectedList As ArrayList = New ArrayList(25)
|
|
Dim recControl As PersonRelativeTableControlRow
|
|
For Each recControl In Me.GetRecordControls()
|
|
If recControl.PersonRelativeRecordRowSelection IsNot Nothing AndAlso recControl.PersonRelativeRecordRowSelection.Checked Then
|
|
selectedList.Add(recControl)
|
|
End If
|
|
Next
|
|
Return DirectCast(selectedList.ToArray(GetType(PersonRelativeTableControlRow)), PersonRelativeTableControlRow())
|
|
|
|
End Function
|
|
|
|
Public Overridable Sub DeleteSelectedRecords(ByVal deferDeletion As Boolean)
|
|
Dim recList() As PersonRelativeTableControlRow = Me.GetSelectedRecordControls()
|
|
If recList.Length = 0 Then
|
|
' Localization.
|
|
Throw New Exception(Page.GetResourceValue("Err:NoRecSelected", "Persons"))
|
|
End If
|
|
|
|
Dim recCtl As PersonRelativeTableControlRow
|
|
For Each recCtl In recList
|
|
If deferDeletion Then
|
|
If Not recCtl.IsNewRecord Then
|
|
|
|
Me.AddToDeletedRecordIds(recCtl)
|
|
|
|
End If
|
|
recCtl.Visible = False
|
|
|
|
recCtl.PersonRelativeRecordRowSelection.Checked = False
|
|
|
|
Else
|
|
|
|
recCtl.Delete()
|
|
|
|
' Setting the DataChanged to True results in the page being refreshed with
|
|
' the most recent data from the database. This happens in PreRender event
|
|
' based on the current sort, search and filter criteria.
|
|
Me.DataChanged = True
|
|
Me.ResetData = True
|
|
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
Public Function GetRecordControls() As PersonRelativeTableControlRow()
|
|
Dim recList As ArrayList = New ArrayList()
|
|
Dim rep As System.Web.UI.WebControls.Repeater = CType(Me.FindControl("PersonRelativeTableControlRepeater"), System.Web.UI.WebControls.Repeater)
|
|
If rep Is Nothing Then Return Nothing
|
|
Dim repItem As System.Web.UI.WebControls.RepeaterItem
|
|
|
|
For Each repItem In rep.Items
|
|
|
|
Dim recControl As PersonRelativeTableControlRow = DirectCast(repItem.FindControl("PersonRelativeTableControlRow"), PersonRelativeTableControlRow)
|
|
recList.Add(recControl)
|
|
|
|
Next
|
|
|
|
Return DirectCast(recList.ToArray(GetType(PersonRelativeTableControlRow)), PersonRelativeTableControlRow())
|
|
End Function
|
|
|
|
Public Shadows ReadOnly Property Page() As BaseApplicationPage
|
|
Get
|
|
Return DirectCast(MyBase.Page, BaseApplicationPage)
|
|
End Get
|
|
End Property
|
|
|
|
#End Region
|
|
|
|
|
|
|
|
End Class
|
|
|
|
|
|
|
|
#End Region
|
|
|
|
|
|
End Namespace
|
|
|
|
|