You can implement
your own business logic by writing your own server events and client scipts. Your code is stored in the project so you can migrate
your project to other templates or future versions easily. This feature
reduces the need of template customization and create maximum possibilities
for you to customize and create more advanced features for your projects.
After loading the database, the database objects (tables, views, custom
views and reports) will be shown in the left pane (the database pane).
Click on any table to go to the Field Setup Page and then select the Code tab (which contains Server Events, Client Scripts and Custom Templates).
To add your custom scripts to the server events or client
scripts, select an item in the treeview, then enter your code
in the editor.
The editor supports Find and Replace. Press
Ctrl-F to open the Find dialog and press
Ctrl-H to open the Replace dialog.
ASPMaker now provides a Code Repository for easy reuse of
your code across projects and sharing with other users. Click
the [Code Repository] button to open it,
categorized reusable code will be displayed:
You can add the code to the editor by clicking the
[Add to Editor] button, or by
double-clicking the item, or simply drag the item to the
editor. The reusable code is stored in XML files which reside
in s subfolder name "code" under the installation
folder. The format of the XML files is simple, there are 3
parts:
There are a few example files in the "code" folder,
you can copy and modify for your own code and then save them
under the "code" folder for reuse.
In general, server events are fired in the following order:
Global -> All Pages
|
Page_Head
|
The code you entered in this event will be placed in the header.asp before closing the <head> section. You can use this event to can add your code in head section. Note: This is a global function.
Example
Include custom JavaScript and CSS styesheet.
ew_AddClientScript("xxx.js") ' Add JavaScript
ew_AddStylesheet("xxx.css") ' Add CSS stylesheet
|
Database_Connecting
|
This event will be called by all ASP pages before connecting to the database. Note: This is a global function.
You can
use this event to change the connection string (e.g.
changing connection info with server, or even
connect to other databases).
Example 1
Sub
Database_Connecting(ConnStr)
'Response.Write(ConnStr)
If ew_CurrentUserIP() =
"127.0.0.1" Then ' Testing on local PC
ConnStr
= "<My connection string on localhost>"
End If
End Sub
Example 2
It is possible to use single login and common Dynamic User Levels for multiple projects provided that ALL projects use the same project name and same Advanced Security tables (i.e. User Table, User Level Table and User Level Permission Table). If all projects uses the same database and same Advanced Security tables, then the latter condition is auto fulfilled. However, if the projects use different databases, you can use this event to change the connection info so the user can get the Dynamic User Levels from the common Advanced Security tables correctly during login, e.g.
Sub
Database_Connecting(ConnStr)
If CurrentPageID = "login" Or CurrentPageID = "userpriv" Then ' login.asp or userpriv.asp
ConnStr
= "<My connection string>" ' Connect to the common database with the common Advanced Security tables
End If
End Sub
|
Page_Loading
|
This event will be called by all ASP pages at the beginning of the page. If the pages involves database connection, it will be called after connecting to the database and before the Page_Load event. Note: This is a global function, NOT page class member.
|
Page_Unloaded
|
This event will be called by all ASP pages at the end of the page. If the pages involves database connection, it will be called before closing database connection and after the Page_Unload event. Note: This is a global function, NOT page class member. |
Global Code
|
VBScript Code to be included in all ASP pages. This may
contain your VBScript constants, variables and
functions.
|
User_CustomValidate
|
For use with security. (See Security Settings) This event is fired before default user validation. You can use this event to validate the user yourself. The arguments are the user name and password the user entered. Return True if the username and password pass your custom validation. Note: This event is a security class member.
Note: From v10, default validation will continue after this event is fired. If you return True, the user will always pass the default validation and get the User ID and User Level, if any. If you return False, the default validation proceeds as normal. If you use Advanced Security, you still need the user table to store user information such as User ID and User Level, although the password field value can be empty or any value if you return True.
Example
Login user by Windows user name.
' Note: This event is a
Security class member, so you can refer to other
members of the Security class directly
Function User_CustomValidate(usr, pwd)
'
e.g. Simple Windows authentication
If
Request.ServerVariables("LOGON_USER") <>
"" Then
usr = Request.ServerVariables("LOGON_USER")
User_CustomValidate = True
End If
End Function
|
User_Validated
|
For use with security. (See Security Settings) This event is fired after successful user login. The user info is passed to the event as an array (see note), you can get more info of the user and use it as you need. Note: This event is a security class member.
Note: This event is not fired for the hard-coded administrator.
Example
Add current user's country to session variable
'
Note: This event is a Security class member, so you
can refer to other members of the Security class
directly
Sub User_Validated(rs)
Session("UserCountry")
= rs("Country")
End Sub
|
UserLevel_Loaded
|
For use with User Level security. (See Security Settings) This event is fired after successful user login and after the User Level settings are loaded. It is possible to do actions such as changing or adding User Level permissions. Note: This event is a security class member.
Example
Change the permissions of an User Level for a table
' Note: This event is a
Security class member, so you can refer to other
members of the Security class directly
Sub UserLevel_Loaded()
DeleteUserPermission
"Sales", "Order",
EW_ALLOW_ADD
AddUserPermission
"Sales", "Order",
EW_ALLOW_EDIT
End Sub
|
MenuItem_Adding
|
This event is fired for custom menu items before it is added to the menu. The menu item info is passed to the event as an instance of the cMenuItem object (see below). Return False if you don't want to show the menu item. If you return True, the menu item will be added to the menu, but it does not mean that it will be always displayed. A menu item will be displayed only if its Allowed property is True. When the menu item is passed to this event, the Allowed property is set based on the User Level Security of the project, you can however change it by setting Item.Allowed as True or False as needed. Note: This is a global function.
Example
Only show a menu item after the user has logged in
Function
MenuItem_Adding(Item)
'Response.Write Item.AsString
' Return False if menu
item not allowed
If
Item.Text = "Download" Then
MenuItem_Adding
= IsLoggedIn()
Else
MenuItem_Adding
= True
End If
End Function
|
Menu_Rendering
|
This event is fired before the menu is rendered. You can manipulate the menu items in this event. The argument is the menu object. (See Menu Object below.) Note: This is a global function.
Example 1
Add an additional menu item to the menu for logged
in users only.
Sub
Menu_Rendering(Menu)
If Menu.IsRoot Then ' Root menu
Menu.AddMenuItem 90000,
"MyMenuText", "MyPage.asp", -1,
"", "", IsLoggedIn(), False
Menu.MoveItem "Logout", Menu.Count ' Move to last
End If
End Sub
Example 2
Remove all the default menu items and use your own
menu items.
Sub
Menu_Rendering(Menu)
If Menu.IsRoot Then ' Root menu
Menu.Clear
Menu.AddMenuItem 1,
"MyMenuText1", "MyPage1.asp",
-1, "", "", True, False
Menu.AddMenuItem 2,
"MyMenuText2", "MyPage2.asp",
-1, "", "", True, False
End If
End Sub
|
TablePermission_Loading
|
For use with User Level security. (See Security Settings) This event is fired before the user permission for the table of the current page is loaded. It is possible to do actions such as changing or adding more User Level permissions to the current user. Note: This event is a security class member.
Note: This is an event
fired for the current table only.If you
change the permissions of the other tables in
this event, there will be no effect. Use the
UserLevel_Loaded event if you
need to change permissions of other tables.
Example
Grant another User Level to the user and let the
user have permissions of more than one User Level
for the current table.
' Note: This event is a
Security class member, so you can refer to other
members of the Security class directly
Sub TablePermission_Loading()
If CurrentUserName =
"nancy" Then
AddUserLevel
"Manager"
End If
End Sub
|
TablePermission_Loaded
|
For use with User Level security. (See Security Settings) This event is fired after the user permission for the table of the current page is loaded. It is possible to to change the permission by using the CanXXX properties of the Security class. Note: This event is a security class member.
Note: This is an event
fired for the current table only. If you
change the permissions of the other tables in
this event, there will be no effect. Use the
UserLevel_Loaded event if you
need to change permissions of other tables.
Example
Grant more permissions to the user and let the user
have more permissions than his/her User Level allows
for the current table.
' Note: This event is a
Security class member, so you can refer to other
members of the Security class directly
Sub TablePermission_Loaded()
If CurrentUserName =
"nancy" And Page.TableName =
"Orders" Then
CanEdit
= True
End If
End Sub
|
UserID_Loading
|
For use with User ID security. (See Security Settings) This event is fired after successful user login and before loading the User ID and its child User IDs of the current user. These User IDs determine which records the current user can access. It is possible to do actions such as changing the User ID of the current user so the user can access records that he/she can access by its original User ID. Note: This event is a security class member.
Example
Change the user's User ID to his parent
user's user ID and let the user access more
records (accessible by the parent user).
' Note: This event is a
Security class member, so you can refer to other
members of the Security class directly
Sub UserID_Loading()
If CurrentParentUserID
<> "" Then
CurrentUserID
= CurrentParentUserID
End If
End Sub
|
UserID_Loaded
|
For use with User ID security. (See Security Settings) This event is fired after loading the User ID and its child User IDs of the current user. These User IDs determine which records the current user can access. It is possible to do actions such as adding or deleting the loaded User IDs for the current user so the user can access more or less records that he/she can access by its originally loaded User IDs. Note: This event is a security class member.
Example
Add more User IDs to the user and let the user
access more records
' Note: This event is a
Security class member, so you can refer to other
members of the Security class directly
Sub UserID_Loaded()
If CurrentUserName =
"nancy" Then
AddUserID GetUserIDByUserName("janet")
End If
End Sub
|
User_PasswordExpired
|
This event will be called if the user password is already expired. User information is passed to the event as argument, you can get user information by rs("<fieldname>") where <fieldname> is a field name of the user table. Note: This event is a security class member. |
Table-Specific -> Common (Note: These events
are members of the table class)
|
RecordSet_Selecting
|
This event will be called before selecting records. The argument of the event is the filter (part of the WHERE clause of the SQL) for selecting records, you can customize the filter to change the records to be selected.
Example
Add your own filter. Note that the argument "filter" may have
value, append your filter to it, not replace it.
Sub Recordset_Selecting(filter)
ew_AddFilter filter,
"(Field1 = 1234)" ' Add your own filter
expression
End Sub
|
RecordSet_Selected
|
This event will be called after selecting records. The
argument is the recordset selected.
|
RecordSet_SearchValidated
|
This event will be called after the
Form_CustomValidate event and the
search criteria is assigned to the table/field
objects. You can modify the search criteria in this
event.
This event is a member of the table class. There is
no arguments for this event. To change the Quick
Search criteria, change the
BasicSearchKeyword and
BasicSearchType property of the
table object. To change the Advanced Search
criteria, change the AdvancedSearch
property (which is an object of the cAdvancedSearch
class) of the field object.
Example
Sub Recordset_SearchValidated() {
MyField1.AdvancedSearch.SearchValue
= "My search criteria" ' Search
value
End Sub
|
RecordSet_Searching
|
This event will be called before the search criteria
is saved for the session.
This event is a member of the table class. The
argument of the event is the part of WHERE clause
built from the Quick/Extended Quick/Advanced search
criteria. You can modify the WHERE clause in this
event.
|
Row_Deleting |
This event will be called before deleting a record. The argument of the event is the record to be deleted as an array. |
Row_Deleted |
This event will be called after deleting a record. The argument of the event is the record deleted as an array.
Example
Delete detail records from the detail table after the master record is deleted.
Function Row_Deleted(rs)
' Assume ForeignKeyField is of integer type
Conn.Execute "DELETE * FROM DetailTable WHERE ForeignKeyField=" & rs("PrimaryKeyField")
End Function |
Row_Inserting
|
This event will be called before inserting a record.
The arguments of the event are the recordsets of the old (if copying record) and new record to be inserted. You can change the values in the rsnew. Note: This event is a table class member.
Example
Make sure a field value is valid
Function Row_Inserting(rsold, rsnew)
If
rsnew("Percentage") > 100 Then
rsnew("Percentage")
= 100
End If
'
To cancel, set return value to False
Row_Inserting = True
End Function
|
Row_Inserted
|
This event will be called after inserting a record.
The arguments of the event are the recordsets of the old (if copying record) and new record to be inserted. You can change the values in the rsnew. Note: This event is a table class member.
Example
Get the ID (autoincrement field) of the just
inserted record
Sub Row_Inserted(rsold, rsnew)
Page.SuccessMessage = "The ID of the new record is
" & rsnew("ID")
End Sub
|
Row_Rendering
|
This event will be called before rendering (applying
the View/Edit Tag settings) a record.
|
Row_Rendered
|
This event will be called after rendering a record.
This is an extremely useful event for conditional
formatting, you can do a lot of things with this
event, such as changing font color, font styles, row
background color, cell background color, etc. by
changing the table or field class properties in the
event according to field values.
The table class has a RowAttrs property which is a dictionary object of HTML attributes for the table row. The field class has CellAttrs, ViewAttrs and EditAttrs for the table cell, View Tag and Edit Tag of the field respectively. The keys of these objects must be valid HTML attributes for the HTML tag, always use lowercase for the keys. The attribute values will be outputted as double quoted attributes, so if you have double quotes in your values, try to use single quotes if possible, or use """.
Note: This event is a table class member.
To view the
properties of the field class for development or
debugging, you can use the AsString method of the
field class in the server event.
Example
To add the Row_Rendered event, click
"Cars" node on the database panel, select
[Server Events/Client Scripts], and
click [Table Specific] - > [Common] -
> [Row_Rendered] server event. The
default Row_Rendered event code is
shown. Change as follow:
' Note: Row_Rendered is a
table class member, so you can refer to the fields
(also table class members) directly
Sub Row_Rendered()
'
Change the row color
If Trademark.ViewValue =
"BMW" Then
Cars.RowAttrs.Append "style", "color: red; background-color:
#ccffcc;"
End If
'
Change the cell color
If Cyl.CurrentValue = 4
Then
Cyl.CellAttrs.Append "style", "background-color: #ffcccc;"
ElseIf Cyl.CurrentValue = 6
Then
Cyl.CellAttrs.Append "style", "background-color: #ffcc99;"
ElseIf Cyl.CurrentValue = 8
Then
Cyl.CellAttrs.Append "style", "background-color: #ffccff;"
End If
' Change
text style
If Category.CurrentValue =
"SPORTS" Then
Category.ViewAttrs.Append "style", "color: #00cc00; font-weight: bold;
background-color: #ffff99;"
End If
End Sub
|
Row_Selecting
|
This event will be called before selecting a record.
The argument is the WHERE clause of the SQL, you can
customize the WHERE clause to change the records to be
selected.
|
Row_Selected
|
This event will be called after selecting a record. The
argument is the record selected.
|
Row_UpdateConflict
|
This event will be called if conflicts is found
before updating a record (if Check Conflicts is
enabled, see Table
Setup). The arguments of the event are the
recordsets of the old and new record updated.
You can use this event to resolve the conflicts
according to your own criteria. If you want to
ignore conflicts or you have resolved the conflicts
in the event (by setting new values to the argument
rsnew) and want to continue update, return False.
Otherwise, return True. By default the event returns
True.
|
Row_Updating
|
This event will be called before updating a record.
The arguments of the event are the recordsets of the
old and new record to be updated.
Example
Make sure a field value is not changed
Function Row_Updating(rsold, rsnew)
If rsnew("Date")
< rsold("Date") Then
'
To cancel, set return value to False
Row_Updating
= False
CancelMessage
= "The new date must be later than the old
date."
Else
Row_Updating = True
End If
End Function
|
Row_Updated
|
This event will be called after updating a record. The
arguments of the event are the recordsets of the old
and new record updated.
|
Email_Sending
|
This event is fired before the email notification is
sent. You can customize the email content using this
event. Email_Sending event has the following
parameters:
Email - the email object instance
which contain all the information about the email to
be sent. It is an instance of the cEmail class,
refer to aspfn*.asp for members of the object.
Args - a dictionary object which contains
additional information. You can view the keys of available information by, e.g.
Response.Write "Keys of Args: " & Join(Args.Keys, ", ")
If Add, the new record in
the format of recordset object can be access by
Args("RsNew"). If Copy, the old record in
the format of recordset object can be access by
Args("RsOld"). If Edit/Update, the old
data of the records in the format of recordset object can be
access by Args("RsOld"), the new data of
the records in the format of recordset object can be access by
Args("RsNew"). You can get a field value
by, e.g.
RsNew =
Args("RsNew")
MyValue = RsNew("MyField")
or
MyValue =
Args("RsNew")("MyField")
Return False in the event if you want to cancel the
email sending.
Note: This event is a table class
member.
Example
Use a field value of the the new record in the email
Function Email_Sending(Email, Args)
'Response.Write Email.AsString
'Response.Write
"Keys of Args: " & Join(Args.Keys,
", ")
'Response.End
If
CurrentPageID = "add" Then' if Add page
Dim rsnew
Set rsnew =
Args("RsNew")
Email.Recipient = rsnew("MyEmailField") ' Change recipient to a field value in the new record
Email.Subject = "My New Subject" ' Change subject
Email.Content = Email.Content & vbCrLf &
" Added by " &
rsnew("UserID") ' Append additional content
End If
Email_Sending = True
End Function
|
UserID_Filtering |
For use with User ID security. (See Security Settings) This event is fired before adding the User ID filter to the WHERE clause of the table. It is possible to modify, replace or add filter so the user can access more or less records that he/she can access by its originally loaded User IDs.
Example
Assume you have 2 User ID fields in the current table and in the user table, and you want to filter by both User ID fields.
Sub UserID_Filtering(filter)
ew_AddFilter filter,
"MyUserIDField2 = " & CurrentUserInfo("MyUserIDField2InUserTable") ' Assume the field is of integer type
End Sub |
Table-Specific -> Add/Copy page
|
Page_Load
|
This event will be called after connecting to the
database.
|
Page_Unload
|
This event will be called before closing database
connection.
|
Page_DataRendering
|
This event will be called after the header.asp is
included. You can use this event to add content at
the top of page content.
|
Page_DataRendered
|
This event will be called before the footer.asp is
included. You can use this event to add content at
the bottom of page content.
|
Page_Redirecting
|
This event will be called before redirecting to
other page. The argument is the URL to be redirected
to.
By default after inserting a record user is
redirected back to the List page. You can change
that by using Return Page (see Table Setup). However, If you
want to change by code, you can also use this event.
|
Message_Showing
|
This event is fired before the message stored in the
session variable is shown.
The first argument msg is the message to be shown, the second argument typ is the type of the message, possible values of type are: "" (empty string), "success", "failure", and "warning".
Note: This event is a page class
member.
Example
Replace an error message by custom message
If typ = "failure" Then ' If a failure/error message
If InStr(msg, "some standard message") > 0 Then ' The original message contains some keywords you want to replace
msg = "My custom message"
End If
End If
|
Form_CustomValidate
|
This event is fired after the normal form
validation. You can use this event to do your own
custom validation. In general, the form data can be
accessed by <Table>.<Field>.FormValue
(e.g. Cars.HP.FormValue). Refer to the generated
code for actual variable names.
A parameter CustomError is passed
to the event, add your error message and return
False if the form values do not pass your
validation.
Example
Make sure an integer field value meet a certain
requirement
Function Form_CustomValidate(CustomError)
If
CInt(Orders.Qty.FormValue) Mod 10 <> 0
Then
Form_CustomValidate = False
'
Return error message in CustomError
CustomError
= "Order quantity must be multiples of
10."
Else
Form_CustomValidate = True
End
If
End Function
|
Table-Specific -> Delete Page
|
Page_Load
|
This event will be called after connecting to the
database.
|
Page_Unload
|
This event will be called before closing database
connection.
|
Page_DataRendering
|
This event will be called after the header.asp is
included. You can use this event to add content at
the top of page content.
|
Page_DataRendered
|
This event will be called before the footer.asp is
included. You can use this event to add content at
the bottom of page content.
|
Message_Showing
|
This event is fired before the message stored in the
session variable is shown. You can use this event to
change the message which is passed to the event as
argument.
Note: This event is a page class
member.
|
Page_Redirecting
|
This event will be called before redirecting to
other page. Event argument is the URL to be
redirected to.
By default after deleting record(s) user is
redirected back to the List page. You can change
that using this event.
|
Table-Specific -> Edit Page
|
Page_Load
|
This event will be called after connecting to the
database.
|
Page_Unload
|
This event will be called before closing database
connection.
|
Page_DataRendering
|
This event will be called after the header.asp is
included. You can use this event to add content at
the top of page content.
|
Page_DataRendered
|
This event will be called before the footer.asp is
included. You can use this event to add content at
the bottom of page content.
|
Message_Showing
|
This event is fired before the message stored in the
session variable is shown. You can use this event to
change the message which is passed to the event as
argument.
Note: This event is a page class
member.
|
Page_Redirecting
|
This event will be called before redirecting to
other page. Event argument is the URL to be
redirected to.
By default after updating a record user is
redirected back to the List page. You can change
that by using Return Page (see Table Setup). However, If you
want to change by code, you can use this event.
|
Table-Specific -> List Page
|
Page_Load
|
This event will be called after connecting to the
database.
Example
From v9, the export links are stored as a
cListOptions object (also see
ListOptions_Load and
ListOptions_Rendered event below),
you can manipulate the links in the same way. The
defaut names of the options are:
-
print
-
html
-
excel
-
word
-
xml
-
csv
-
email
Note that the names are case-sensitive. They are in
lowercase.
This example hides the export to email link in List
page:
Sub Page_Load()
Dim item
Set item =
ExportOptions.GetItem("email")
If Not (item Is Nothing) Then item.Visible = False
End Sub
|
Page_Unload
|
This event will be called before closing database
connection.
|
Page_DataRendering
|
This event will be called after the header.asp is
included. You can use this event to add content at
the top of page content.
|
Page_DataRendered
|
This event will be called before the footer.asp is
included. You can use this event to add content at
the bottom of page content.
|
Page_Redirecting
|
This event will be called before redirecting to
other page. Event argument is the URL to be
redirected to.
|
Message_Showing
|
This event is fired before the message stored in the
session variable is shown. You can use this event to
change the message which is passed to the event as
argument.
Note: This event is a page class
member.
|
Form_CustomValidate
|
This event is fired after the normal form
validation. You can use this event to do your own
custom validation. In general, the form data can be
accessed by
<Table>.<Field>.FormValue (e.g.
Cars.HP.FormValue). Refer to the generated
code for actual variable names.
A parameter CustomError is passed
to the event, add your error message and return
False if the form values do not pass your
validation.
Note: This event is a page class
member.
|
ListOptions_Load
|
This event will be called before the main table is
rendered. Use this event to modify the non data
columns of the main table (i.e. the links and the
checkbox for each record). You can modify these
columns or add your own columns using this event.
You can get a column by name using the
ListOptions.GetItem(name) method, the following
predefined names are reserved, do not use them for
your own columns:
- checkbox
- view
- copy
- delete
- edit
- details - for use with PreviewRow extension (for registered users) only, or
- detail_<DetailTable> - NOT for use with PreviewRow extension (for registered users)
Note: This event is a page class
member.
Example 1
Add a new column.
Sub ListOptions_Load()
Dim item
Set item = ListOptions.Add("new")
item.Header =
"MyCaption" ' Set
the column header (for List page)
item.OnLeft =
True ' Link on
left
item.MoveTo 0 ' Move to first column
End Sub
Example 2
Hide a column.
Sub ListOptions_Load()
ListOptions.GetItem("new").Visible = False
End Sub
|
ListOptions_Rendered
|
This event will be called before a record is
rendered. Use this event to modify content of the
non data columns for the record. To access field object of the current row, you can use <Field>.<Property> (e.g. HP.CurrentValue).
Note: Do NOT try to show/hide a column dynamically by setting the Visible property of the list option in this event. If the column is visible in one row but invisible in another, the table will be malformed. If you want to hide the content dynamically, you can set the Body property as empty string.
Example 1
Set the content of the new column dynamically based on a field value.
Sub ListOptions_Rendered()
If MyField.CurrentValue = "xxx" Then
ListOptions.GetItem("new").Body
= "xxx"
Else
ListOptions.GetItem("new").Body
= ""
End If
End Sub
Example 2
Merge options into the one and hide the others. The first argument of the Merge method is a regular expression pattern to match the option names that you want to merge, e.g. "view|copy|delete|edit". The first matched option will remain visible, the others will be hidden. The second argument is the separator between the options. The return value is the merged (the first matched) otpion. The following example merge the columns for detail table links into one.
Sub ListOptions_Rendered()
ListOptions.Merge("^detail_", "<br>")
End Sub
|
Table-Specific -> Multi-Update Page
|
Page_Load
|
This event will be called after connecting to the
database.
|
Page_Unload
|
This event will be called before closing database
connection.
|
Page_DataRendering
|
This event will be called after the header.asp is
included. You can use this event to add content at
the top of page content.
|
Page_DataRendered
|
This event will be called before the footer.asp is
included. You can use this event to add content at
the bottom of page content.
|
Page_Redirecting
|
This event will be called before redirecting to
other page. Event argument is the URL to be
redirected to.
By default after updating records user is redirected
back to the List page. You can change that by using
this event.
|
Message_Showing
|
This event is fired before the message stored in the
session variable is shown. You can use this event to
change the message which is passed to the event as
argument.
Note: This event is a page class
member.
|
Form_CustomValidate
|
This event is fired after the normal form validation. You can use this event to do your own custom validation. See description of Form_CustomValidate for Add/Copy page above.
|
Table-Specific -> Report Page
|
Page_Load
|
This event will be called after connecting to the
database.
|
Page_Unload
|
This event will be called before closing database
connection.
|
Page_DataRendering
|
This event will be called after the header.asp is
included. You can use this event to add content at
the top of page content.
|
Page_DataRendered
|
This event will be called before the footer.asp is
included. You can use this event to add content at
the bottom of page content.
|
Page_Redirecting
|
This event will be called before redirecting to
other page. Event argument is the URL to be
redirected to.
|
Message_Showing
|
This event is fired before the message stored in the
session variable is shown. You can use this event to
change the message which is passed to the event as
argument.
Note: This event is a page class
member.
|
Table-Specific -> Search Page
|
Page_Load
|
This event will be called after connecting to the
database.
|
Page_Unload
|
This event will be called before closing database
connection.
|
Page_DataRendering
|
This event will be called after the header.asp is
included. You can use this event to add content at
the top of page content.
|
Page_DataRendered
|
This event will be called before the footer.asp is
included. You can use this event to add content at
the bottom of page content.
|
Page_Redirecting
|
This event will be called before redirecting to
other page. Event argument is the URL to be
redirected to.
By default user is redirected to the List page after
the search criteria is processed. You can change
that by using this event.
|
Message_Showing
|
This event is fired before the message stored in the
session variable is shown. You can use this event to
change the message which is passed to the event as
argument.
Note: This event is a page class
member.
|
Form_CustomValidate
|
This event is fired after the normal form validation. You can use this event to do your own custom validation. See description of Form_CustomValidate for Add/Copy page above.
|
Table-Specific -> View Page
|
Page_Load
|
This event will be called after connecting to the
database.
|
Page_Unload
|
This event will be called before closing database
connection.
|
Page_DataRendering
|
This event will be called after the header.asp is
included. You can use this event to add content at
the top of page content.
|
Page_DataRendered
|
This event will be called before the footer.asp is
included. You can use this event to add content at
the bottom of page content.
|
Page_Redirecting
|
This event will be called before redirecting to
other page. Event argument is the URL to be
redirected to.
|
Message_Showing
|
This event is fired before the message stored in the
session variable is shown. You can use this event to
change the message which is passed to the event as
argument.
Note: This event is a page class
member.
|
Table-Specific -> Preview Page
|
Page_Load
|
This event will be called after connecting to the
database.
|
Page_Unload
|
This event will be called before closing database
connection.
|
Page_DataRendering
|
This event will be called before the page content is
ouputted. You can use this event to add content at
the top of page content.
|
Page_DataRendered
|
This event will be called after the page content is
outputted. You can use this event to add content at
the bottom of page content.
|
Page_Redirecting
|
This event will be called before redirecting to
other page. Event argument is the URL to be
redirected to.
|
Message_Showing
|
This event is fired before the message stored in the
session variable is shown. You can use this event to
change the message which is passed to the event as
argument.
Note: This event is a page class
member.
|
Other -> Login Page
|
Page_Load
|
This event will be called at the beginning of the page.
|
Page_Unload
|
This event will be called at the end of the page.
|
Page_DataRendering
|
This event will be called after the header.asp is
included. You can use this event to add content at
the top of page content.
|
Page_DataRendered
|
This event will be called before the footer.asp is
included. You can use this event to add content at
the bottom of page content.
|
Page_Redirecting
|
This event will be called before redirecting to
other page. Event argument is the URL to be
redirected to.
By default user is redirected to the default page
(e.g. index.asp) after successful login. You can
change that by using this event.
|
Message_Showing
|
This event is fired before the message stored in the
session variable is shown. You can use this event to
change the message which is passed to the event as
argument.
Note: This event is a page class
member.
|
User_LoggingIn
|
This event will be called before validating the
username and password. Note: This
event is a page class member.
|
User_LoggedIn
|
This event will be called after the user login.
Note: This event is a page class
member.
|
Form_CustomValidate
|
This event is fired after the normal form validation. You can use this event to do your own custom validation. See description of Form_CustomValidate for Add/Copy page above.
|
User_LoginError
|
This event will be called if the user fail to login.
Note: This event is a page class
member.
|
Other -> Logout Page
|
Page_Load
|
This event will be called at the beginning of the page.
|
Page_Unload
|
This event will be called at the end of the page.
|
Page_Redirecting
|
This event will be called before redirecting to
other page. Event argument is the URL to be
redirected to.
By default user is redirected to the default page
(e.g. default.asp) after successful login. You can
change that by using this event.
|
User_LoggingOut
|
This event will be called before user logout.
Note: This event is a page class
member.
|
User_LoggedOut
|
This event will be called after user logout.
Note: This event is a page class
member.
|
Other -> Registration Page
|
Page_Load
|
This event will be called at the beginning of the page.
|
Page_Unload
|
This event will be called at the end of the page.
|
Page_DataRendering
|
This event will be called after the header.asp is
included. You can use this event to add content at
the top of page content.
|
Page_DataRendered
|
This event will be called before the footer.asp is
included. You can use this event to add content at
the bottom of page content.
|
Page_Redirecting
|
This event will be called before redirecting to
other page. Event argument is the URL to be
redirected to.
By default user is redirected to the default page
(e.g. default.asp) after successful login. You can
change that by using this event.
|
Email_Sending
|
This event is fired before the email notification is
sent. You can customize the email content using this
event. Email_Sending event has the following
parameters:
Email - the email object instance
which contain all the information about the email to
be sent. It is an instance of the cEmail class,
refer to aspfn*.asp for members of the object.
Args - an instance of Dictionary
object which contains additional information. For
registration page, the new record in the data type
of an ADO recordset can be access by
Args("Rs").
Return False in the event if you want to cancel the
email sending.
Note: This event is a page class
member.
|
Message_Showing
|
This event is fired before the message stored in the
session variable is shown. You can use this event to
change the message which is passed to the event as
argument.
Note: This event is a page class
member.
|
Form_CustomValidate
|
This event is fired after the normal form validation. You can use this event to do your own custom validation. See description of Form_CustomValidate for Add/Copy page above.
|
User_Registered
|
This event is fired after successful registration of
a new user. Argument is a recordset of the new
record in the user table.
|
User_Activated
|
This event is fired after activating a new user (if
user activation is required, see Security Settings). Argument
is a recordset of the new record in the user table.
|
Other -> Change Password Page
|
Page_Load
|
This event will be called at the beginning of the page.
|
Page_Unload
|
This event will be called at the end of the page.
|
Page_Redirecting
|
This event will be called before redirecting to
other page. Event argument is the URL to be
redirected to.
By default user is redirected to the default page
(e.g. default.asp) after successful login. You can
change that by using this event.
|
Email_Sending
|
This event is fired before the email notification is
sent. You can customize the email content using this
event. Email_Sending event has the following
parameters:
Email - the email object instance
which contain all the information about the email to
be sent. It is an instance of the cEmail class,
refer to aspfn*.asp for members of the object.
Args - an instance of Dictionary
object which contains additional information. The new data of the records
in the data type of an ADO recordset can be access
by Args("Rs").
Return False in the event if you want to cancel the
email sending.
Note: This event is a page class
member.
|
Message_Showing
|
This event is fired before the message stored in the
session variable is shown. You can use this event to
change the message which is passed to the event as
argument.
Note: This event is a page class
member.
|
Form_CustomValidate
|
This event is fired after the normal form validation. You can use this event to do your own custom validation. Inspect the HTML source of the page in your browser to view the form element names.
An argument CustomError is passed to the event, you can add your error message and return False if the form values do not pass your validation.
Note: This event is a page class
member.
|
Other -> Password Recovery Page
|
Page_Load
|
This event will be called at the beginning of the page.
|
Page_Unload
|
This event will be called at the end of the page.
|
Page_DataRendering
|
This event will be called after the header.asp is
included. You can use this event to add content at
the top of page content.
|
Page_DataRendered
|
This event will be called before the footer.asp is
included. You can use this event to add content at
the bottom of page content.
|
Page_Redirecting
|
This event will be called before redirecting to
other page. Event argument is the URL to be
redirected to.
By default user is redirected to the login page
after successful login. You can change that by using
this event.
|
Email_Sending
|
This event is fired before the email notification is
sent. You can customize the email content using this
event. Email_Sending event has the following
parameters:
Email - the email object instance
which contain all the information about the email to
be sent. It is an instance of the cEmail class,
refer to aspfn*.asp for members of the object.
Args - an instance of Dictionary
object which contains additional information. The data of the user
in the data type of an ADO recordset can be access
by Args("Rs").
Return False in the event if you want to cancel the
email sending.
Note: This event is a page class
member.
|
Message_Showing
|
This event is fired before the message stored in the
session variable is shown. You can use this event to
change the message which is passed to the event as
argument.
Note: This event is a page class
member.
|
Form_CustomValidate
|
This event is fired after the normal form validation. You can use this event to do your own custom validation. Inspect the HTML source of the page in your browser to view the form element names.
An argument CustomError is passed to the event, you can add your error message and return FALSE if the form values do not pass your validation. |
User_RecoverPassword
|
This event is fired after the password is recovered.
Argument is a recordset of the user's record in
the user table.
|
In general, each page has two blocks of JavaScript:
Global -> Pages with header/footer
|
Client Script
|
The script will be placed in the header and therefore included in all pages with header.
Note: This event is NOT related to the No header/footer setting in the Generate form (see Generate Settings). Even if No header/footer is enabled, this event will also be fired. |
Startup Script
|
The script will be placed in the footer and therefore included in all pages with footer. This is a very useful event which is fired fired for all pages with footer, you can almost do everything by changing the document DOM of those pages.
Note: This event is NOT related to the No header/footer setting in the Generate form (see Generate Settings). Even if No header/footer is enabled, this event will also be fired. |
Global Code
|
JavaScript code to be included in all pages with
header. This may contain your global constants,
variables and functions.
|
Table-Specific -> Add/Copy page
|
Client Script
|
The script will be placed after the header. This may contain your JavaScript variables and functions for the page. You can also use this event to subscribe a custom event.
Example
Subscribe the "RenderTemplate" custom event for Custom Templates.
ewRenderTemplateEvent.subscribe(function(type, args) {
//alert(ewJson.stringify(args[0])); // Uncomment to view the arguments
args[0].enabled = false; // Disable the Custom Template
ew_ShowTemplates(args[0].template.substr(4)); // Show the templates with the specified class name
}); |
Startup Script
|
The script will be placed before the footer. This is a very useful event which you can almost do everything by changing the document DOM.
Example 1
Add onchange event to a field (textbox)
ewEvent.on("x_Field1", "change", function(e) {
var form = this.form; // Get the HTML form element
var el2 = form.elements["x_Field2"]; // Get the form element for field #2
el2.value = "xxx"; // Set value to field #2 (assume el2 is a textbox)
});
Example 2
Add onclick event to a field (checkbox)
ewEvent.on("x_MyField", "click", function(e) {
var form = this.form; // Get the HTML form element
if (this.checked) { // Checkbox is checked
// Do something
} else { // Not checked
// Do something else
}
});
In general, the HTML form element for the field is named as "x_FieldName", inspect the element in your browser to check the actual name. In the event handler, "this" is the form element which fired the event. ewEvent is a shortcut to YAHOO.util.Event, read YUI 2: Event Utility for more information on how to use it. |
Form_CustomValidate
|
This event is fired after the normal form validation. You can use this event to do your own custom validation. The HTML form object can be accessed by the parameter fobj. In general, the HTML form element for the field can be referred to as fobj.elements["x_FieldName"].
Return false if the form values do not pass your validation.
Note: This function is a member of the JavaScript page class.
Example
Make sure an integer field value meet a certain
requirement
function(fobj) { // DO NOT
CHANGE THIS LINE!
var elements =
fobj.row;
var qty =
parseInt(elements["x_Qty"].value); // In this example "x_Qty" is a textbox
if (qty % 10 != 0) {
return ew_OnError(this,
elements["x_Qty"], "Order
quantity must be multiples of 10."); // return false if invalid
}
return true;
}
|
Table-Specific -> Delete Page
|
Client Script
|
The script will be placed after the header.
|
Startup Script
|
The script will be placed before the footer.
|
Table-Specific -> Edit Page
|
Client Script
|
The script will be placed after the header.
|
Startup Script
|
The script will be placed before the footer.
|
Form_CustomValidate
|
This function is called after the normal form
validation. You can use this event to do your own
custom validation. The form object can be accessed
by the parameter fobj. Return False
if the form values do not pass your validation.
|
Table-Specific -> List Page
|
Client Script
|
The script will be placed after the header.
|
Startup Script
|
The script will be placed before the footer.
|
Form_CustomValidate
|
This function is called after the normal form
validation. You can use this event to do your own
custom validation. The form object can be accessed
by the parameter fobj. Return False
if the form values do not pass your validation.
|
Table-Specific -> Multi-Update Page
|
Client Script
|
The script will be placed after the header.
|
Startup Script
|
The script will be placed before the footer.
|
Form_CustomValidate
|
This event is fired after the normal form validation. You can use this event to do your own custom validation. The form object can be accessed by the parameter fobj. In general, the HTML form element for the field can be referred to as fobj.elements["x_FieldName"].
Note: The form element names are different in Inline-Add/Copy/Edit or Grid-Add/Edit mode of List page. They are named as "x0_FieldName" in Inline-Add/Copy, as "x1_FieldName" in Inline-Edit mode, and as "x1_FieldName", "x2_FieldName", etc. in Grid-Add/Edit since there are multiple rows. Inspect the elements in your browser to check the actual form element names. For simplicity, the form elements of the current row will also be added to the fobj.row property (an array of the HTML form elements) before this event is fired. So you can always use fobj.row["x_FieldName"] to get the HTML form element of the field of the current row in the List page. For other pages, you should use fobj.elements["x_FieldName"] directly.
Return false if the form values do not pass your validation. |
Table-Specific -> Report Page
|
Client Script
|
The script will be placed after the header.
|
Startup Script
|
The script will be placed before the footer.
|
Table-Specific -> Search Page
|
Client Script
|
The script will be placed after the header.
|
Startup Script
|
The script will be placed before the footer.
|
Form_CustomValidate
|
This function is called after the normal form
validation. You can use this event to do your own
custom validation. The form object can be accessed
by the parameter fobj. Return False
if the form values do not pass your validation.
|
Table-Specific -> View Page
|
Client Script
|
The script will be placed after the header.
|
Startup Script
|
The script will be placed before the footer.
|
Other -> Login Page
|
Client Script
|
The script will be placed after the header.
|
Startup Script
|
The script will be placed before the footer.
|
Form_CustomValidate
|
This function is called after the normal form
validation. You can use this event to do your own
custom validation. The form object can be accessed
by the parameter fobj. Return False
if the form values do not pass your validation.
|
Other -> Registration Page
|
Client Script
|
The script will be placed after the header.
|
Startup Script
|
The script will be placed before the footer.
|
Form_CustomValidate
|
This function is called after the normal form
validation. You can use this event to do your own
custom validation. The form object can be accessed
by the parameter fobj. Return False
if the form values do not pass your validation.
|
Other -> Change Password Page
|
Client Script
|
The script will be placed after the header.
|
Startup Script
|
The script will be placed before the footer.
|
Form_CustomValidate
|
This function is called after the normal form
validation. You can use this event to do your own
custom validation. The form object can be accessed
by the parameter fobj. Return False
if the form values do not pass your validation.
|
Other -> Password Recovery Page
|
Client Script
|
The script will be placed after the header.
|
Startup Script
|
The script will be placed before the footer.
|
Form_CustomValidate
|
This function is called after the normal form
validation. You can use this event to do your own
custom validation. The form object can be accessed
by the parameter fobj. Return False
if the form values do not pass your validation.
|
The following objects are available in the generated code and
you can use them in the Server Events to add more power to
the code. The most important objects are:
There are a few other objects in the generated code, please
refer to the generated file "aspfn*.asp".
The following are some useful global function available in
the generated code for you to get information easier in
server events:
There are many other functions in the generated code, please
refer to the source code of the file "aspfn*.asp"in template or generated
scripts.