User Interface

Labels
AJAX(112) App Studio(9) Apple(1) Application Builder(245) Application Factory(207) ASP.NET(95) ASP.NET 3.5(45) ASP.NET Code Generator(72) ASP.NET Membership(28) Azure(18) Barcode(2) Barcodes(3) BLOB(18) Business Rules(1) Business Rules/Logic(140) BYOD(13) Caching(2) Calendar(5) Charts(29) Cloud(14) Cloud On Time(2) Cloud On Time for Windows 7(2) Code Generator(54) Collaboration(11) command line(1) Conflict Detection(1) Content Management System(12) COT Tools for Excel(26) CRUD(1) Custom Actions(1) Data Aquarium Framework(122) Data Sheet(9) Data Sources(22) Database Lookups(50) Deployment(22) Designer(178) Device(1) DotNetNuke(12) EASE(20) Email(6) Features(101) Firebird(1) Form Builder(14) Globalization and Localization(6) How To(1) Hypermedia(2) Inline Editing(1) Installation(5) JavaScript(20) Kiosk(1) Low Code(3) Mac(1) Many-To-Many(4) Maps(6) Master/Detail(36) Microservices(4) Mobile(63) Mode Builder(3) Model Builder(3) MySQL(10) Native Apps(5) News(18) OAuth(9) OAuth Scopes(1) OAuth2(13) Offline(20) Offline Apps(4) Offline Sync(5) Oracle(11) PKCE(2) Postgre SQL(1) PostgreSQL(2) PWA(2) QR codes(2) Rapid Application Development(5) Reading Pane(2) Release Notes(184) Reports(48) REST(29) RESTful(29) RESTful Workshop(15) RFID tags(1) SaaS(7) Security(81) SharePoint(12) SPA(6) SQL Anywhere(3) SQL Server(26) SSO(1) Stored Procedure(4) Teamwork(15) Tips and Tricks(87) Tools for Excel(3) Touch UI(93) Transactions(5) Tutorials(183) Universal Windows Platform(3) User Interface(338) Video Tutorial(37) Web 2.0(100) Web App Generator(101) Web Application Generator(607) Web Form Builder(40) Web.Config(9) Workflow(28)
Archive
Blog
User Interface
Friday, May 4, 2012PrintSubscribe
Configuring an Auto Complete Field

Code On Time web application generator assigns Lookup item style to all foreign key fields.

'EmployeeID' field rendered as lookup in Code On Time web application

The Lookup item style has powerful searching and filtering capabilities, but may require several clicks to find a record. A speedy alternative to the lookup is the Auto Complete items style. The user types in a value in the field, and a list of matching field entries will be displayed.

Open the Project Designer. In the Explorer, switch to Controllers tab. Double-click on Orders / Fields / EmployeeID field node.

'EmployeeID' field from Orders controller in Code On Time Project Explorer

Change the following properties:

Property New Value
Items Style Auto Complete
Data Value Field EmployeeID
Data Text Field LastName

Press OK to save the field. On the tool bar, click Browse to generate the application.

When it opens in your default web browser, navigate to Orders page and edit an order. Click on the dropdown arrow, and you will see a list of all options.

Employee Last Name data field as auto complete showing full list of available options

Close the dropdown and type in the letter “d”. A list of matching employees whose last name start with “D” will appear.

Auto Complete results from typing in 'd' in 'EmployeeID' field

Now type “o”, and that list of employees will narrow down to those that have last names that start with “Do”.

Auto Complete results from typing in 'do' in 'EmployeeID' field

You can now hit Tab or Enter on the keyboard, or click on the list item, to insert it into the field.

Option selected from list of auto complete list items

If the entered text does not match to any items in the list, then the input field will revert to the original value.

Let’s make this field take less real estate on the users screen.

Switch back to the Designer. In the Project Explorer, double-click on Orders / Views / editForm1 / c1 – Orders / EmployeeID data field node.

EmployeeID data field in editForm1 view of Orders controller configured with Auto Complete items style

Change the following setting:

Property New Value
Columns 20

Press OK to save the data field, and click Browse on the tool bar.

Navigate to Orders page, and edit a record. The data field is now twenty characters wide.

EmployeeID data field is now 20 characters wide

Friday, May 4, 2012PrintSubscribe
Configuring a Check Box

The Discontinued field in the Products controller is a Boolean field. By default, Code On Time web application generator assigns Drop Down List style to fields of this type, which allows “Yes”, “No”, or “(select)” options to be selected. The “(select)” option represents null, “Yes” represents True, and “No” represents False.

'Discontinued' field with items style of 'Drop Down List'

However, this field is mandatory, and can only be in two states — True or False. It would be more convenient to the end user if this field was presented as a Check Box.

Start the Project Designer. In the Explorer, switch to the Controllers tab. Double-click on Products / Fields / Discontinued field node.

Discontinued field of the Products controller in the Project Explorer

Make the following changes:

Property New Value
Allow null values False
Code Default 0
Items Style Check Box

Press OK to save your changes. On the tool bar, click on Browse to generate the application.

When the application opens in your default browser, navigate to Products page. You will see that Discontinued field is now a check box.

'Discontinued' field now displayed as a Check Box

In the grid view, the Discontinued field is rendered as a check box as well.

Discontinued field rendered as check box in Products grid view

The text displayed to the right of the Check Box in form view can be changed using the Header Text property of the data field.

Switch back to the Design environment. In the Project Explorer, double-click on Products / Views / editForm1 / c1 – Products / Discontinued data field node.

Discontinued data field in the editForm1 data view of Products controller

Change the following property:

Property Value
Header Text This product is no longer available.

Press OK to save the data field, and press Browse on the tool bar. Select a record on the Products page. You will see the new Header Text is displayed to the right of the check box.

'Discontinued' check box data field with a custom Header Text

Sunday, April 29, 2012PrintSubscribe
Using Calculated Field as User-Friendly Foreign Key Identity

Let’s examine two tables in the Northwind database, Employees and Orders. Each order is linked to an employee via the EmployeeID foreign key relationship.

Employees and Orders table diagram from the Northwind database

A Code On Time web application will perform automatic denormalization and use the LastName field as alias for EmployeeID. This field is shown below, labeled “Employee Last Name”.

Default Orders edit form with 'Employee Last Name' field

The end user may want to see the full name of the employee instead.

Let’s create a calculated field that combines First Name and Last Name of the employee, and use this field as an alias for EmployeeID in both Employees and Orders controllers.

Creating the Calculated Field in Employees Controller

Activate the Project Designer. In the Explorer, switch to Controllers tab. Let’s take a look at the command of Employees controller. Double-click on Employees / Commands / command1 node.

Employees 'command1' in Code On Time Project Explorer

Take a look at the text of the command.

select
    "Employees"."EmployeeID" "EmployeeID"
    ,"Employees"."LastName" "LastName"
    ,"Employees"."FirstName" "FirstName"
    ,"Employees"."Title" "Title"
    ,"Employees"."TitleOfCourtesy" "TitleOfCourtesy"
    ,"Employees"."BirthDate" "BirthDate"
    ,"Employees"."HireDate" "HireDate"
    ,"Employees"."Address" "Address"
    ,"Employees"."City" "City"
    ,"Employees"."Region" "Region"
    ,"Employees"."PostalCode" "PostalCode"
    ,"Employees"."Country" "Country"
    ,"Employees"."HomePhone" "HomePhone"
    ,"Employees"."Extension" "Extension"
    ,"Employees"."Photo" "Photo"
    ,"Employees"."Notes" "Notes"
    ,"Employees"."ReportsTo" "ReportsTo"
    ,"ReportsTo"."LastName" "ReportsToLastName"
    ,"Employees"."PhotoPath" "PhotoPath"
from "dbo"."Employees" "Employees"
    left join "dbo"."Employees" "ReportsTo" on "Employees"."ReportsTo" = "ReportsTo"."EmployeeID"

You can see the alias “Employees” in front of the LastName and FirstName columns. You will need to use this alias when referring to columns of the Employees table in the SQL Formula of the calculated field.

Make sure not to modify and/or save the command – the code generator
will stop automatically updating the command if you do so.

Let’s create the new field. Right-click on Employees / Fields node and select New Field option.

New Field for Employees data controller

Give this field the following settings:

Property Value
Name EmployeeFullName
Allow Null Values True
The value of this field is computed at run-time by SQL expression.
"Employees"."LastName" + ', ' + "Employees"."FirstName"
Label Employee Full Name
Values of this field cannot be edited True
Allow Query-by-Example True
Allow Sorting True

Press OK to save the new field.

Now let’s change the data fields in the grid view. In the Project Explorer, double-click on Employees / Views / grid1 / LastName data field node.

'LastName' data field in grid1 view of Employees controller

Make the following change:

Property New Value
Field Name EmployeeFullName

Press OK to save the data field. In the Project Explorer, right-click on Employees / Views / grid1 / FirstName data field node, and choose Delete option. Select OK to confirm the delete operation.

Delete 'FirstName' data field from 'grid1' view of Employees data controller

Creating the Calculated Field in Orders Controller

Before creating the “EmployeeFullName” field in Orders controller, we’ll need to find the alias of the Employees tables in the command text.

Double-click on Orders / Commands / command1 node.

Orders 'command1' in Code On Time Project Explorer

Take a look at the text of the command.

select
    "Orders"."OrderID" "OrderID"
    ,"Orders"."CustomerID" "CustomerID"
    ,"Customer"."CompanyName" "CustomerCompanyName"
    ,"Orders"."EmployeeID" "EmployeeID"
    ,"Employee"."LastName" "EmployeeLastName"
    ,"Orders"."OrderDate" "OrderDate"
    ,"Orders"."RequiredDate" "RequiredDate"
    ,"Orders"."ShippedDate" "ShippedDate"
    ,"Orders"."ShipVia" "ShipVia"
    ,"ShipVia"."CompanyName" "ShipViaCompanyName"
    ,"Orders"."Freight" "Freight"
    ,"Orders"."ShipName" "ShipName"
    ,"Orders"."ShipAddress" "ShipAddress"
    ,"Orders"."ShipCity" "ShipCity"
    ,"Orders"."ShipRegion" "ShipRegion"
    ,"Orders"."ShipPostalCode" "ShipPostalCode"
    ,"Orders"."ShipCountry" "ShipCountry"
from "dbo"."Orders" "Orders"
    left join "dbo"."Customers" "Customer" on "Orders"."CustomerID" = "Customer"."CustomerID"
    left join "dbo"."Employees" "Employee" on "Orders"."EmployeeID" = "Employee"."EmployeeID"
    left join "dbo"."Shippers" "ShipVia" on "Orders"."ShipVia" = "ShipVia"."ShipperID"

You can see that this data controller refers to Employees using “Employee”, which is different than the Employees data controller reference of “Employees”. The SQL Formula of the calculated field will need to use the alias of the command text in Orders data controller.

Make sure not to save any changes to the command. Right-click on Orders / Fields node, and choose New Field.

New Field in Orders data controller

Use the following settings for the new field:

Property Value
Name EmployeeFullName
Allow null values True
The value of this field is computed at run-time by SQL Expression
"Employee"."LastName" + ', ' + "Employee"."FirstName"
Label Employee Full Name
Values of this field cannot be edited True
Allow Query-by-Example True
Allow Sorting True

Press OK to save the field.

Let’s change the alias of the EmployeeID data fields in each view so that Employee Full Name is displayed. In the Explorer, double-click on Orders / Fields / EmployeeID field node.

EmployeeID field of Orders data controller

At the top, switch to Data Fields tab. For all three data fields, make the following change:

Property New Value
Alias EmployeeFullName

Change Alias to 'EmployeeFullName' for all EmployeeID data fields

On the tool bar, press Browse to generate the web application. When it opens in your default web browser, navigate to Orders page. The EmployeeID field now shows the full name of each employee, instead of just the last name.

Employee Full Name displayed for Orders data view

If you edit a record and activate the lookup for Employee Full Name, you will see that the grid view will show the Employee Full Name in the first column.

Employee Full Name displayed in EmployeeID lookup

Selecting a record from the grid will insert the full name into the lookup field.

Employee Full Name inserted into EmployeeID lookup field

Navigate to the Employees page of the web application. If you activate inline edit mode on the grid view, you will not be able to edit the Employee Full Name field.

Employee Full Name is read-only in grid view

However, if you edit a record using form view, the original First Name and Last Name fields are still there.

Last Name and First Name fields are editable in edit form