Tutorials

Labels
AJAX(112) App Studio(7) 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(177) 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(12) Offline(20) Offline Apps(4) Offline Sync(5) Oracle(10) PKCE(2) PostgreSQL(2) PWA(2) QR codes(2) Rapid Application Development(5) Reading Pane(2) Release Notes(180) 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(2) 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
Tutorials
Tuesday, March 13, 2012PrintSubscribe
Order Details: Update “Extended Price” Field

When you create a new order detail, the Extended Price field will not be calculated and will only display N/A until you save the record.

'Extended Price' Field not updating in web application

Let’s make the field automatically update and provide instantaneous feedback to the user. Switch back to the Designer, and double-click on OrderDetails / Fields / ExtendedPrice node.

Change the following settings:

Property Text
The value of this field is calculated by a business rule expression True
Code Formula
Convert.ToDecimal(unitPrice) * Convert.ToDecimal(quantity) * (1 - Convert.ToDecimal(discount))
Context Fields ProductID, UnitPrice, Quantity, Discount

'Code Formula' in Code On Time Designer
'Context Fields' in Code On Time Designer

Press OK to save the field. Generate the application, and wait for the Preview to load. Select an order, and create a new order detail. Select a product, and you will see that the Extended Price field has been calculated. Change any field and shift focus, and the Extended Price field will be recalculated every time.

Updating 'Extended Price' Field in Code On Time web application

To handle this calculation, the web application generator created a business rules class. It can be found in the project’s App_Code/Rules folder.

C#:

namespace MyCompany.Rules
{
    public partial class OrderDetailsBusinessRules : MyCompany.Data.BusinessRules
    {
        
        [ControllerAction("OrderDetails", "Calculate", "ExtendedPrice")]
        public void CalculateOrderDetails(int? orderID, string orderCustomerID, 
            string orderCustomerCompanyName, string orderEmployeeLastName, 
            string orderShipViaCompanyName, int? productID, 
            string productProductName, string productCategoryCategoryName, 
            string productSupplierCompanyName, decimal? unitPrice, 
            short? quantity, float? discount)
        {
            UpdateFieldValue("ExtendedPrice", Convert.ToDecimal(unitPrice) * 
                Convert.ToDecimal(quantity) * (1 - Convert.ToDecimal(discount)));
        }
        
        [RowBuilder("OrderDetails", RowKind.New)]
        public void BuildNewOrderDetails()
        {
            UpdateFieldValue("Quantity", 1);
            UpdateFieldValue("Discount", 0);
        }
    }
}

VB:

Namespace MyCompany.Rules
    
    Partial Public Class OrderDetailsBusinessRules
        Inherits MyCompany.Data.BusinessRules
        
        <ControllerAction("OrderDetails", "Calculate", "ExtendedPrice")> _
        Public Sub CalculateOrderDetails(ByVal orderID As Nullable(Of Integer),
                                         ByVal orderCustomerID As String,
                                         ByVal orderCustomerCompanyName As String,
                                         ByVal orderEmployeeLastName As String,
                                         ByVal orderShipViaCompanyName As String,
                                         ByVal productID As Nullable(Of Integer),
                                         ByVal productProductName As String,
                                         ByVal productCategoryCategoryName As String,
                                         ByVal productSupplierCompanyName As String,
                                         ByVal unitPrice As Nullable(Of Decimal),
                                         ByVal quantity As Nullable(Of Short),
                                         ByVal discount As Nullable(Of Single))
            UpdateFieldValue("ExtendedPrice", Convert.ToDecimal(unitPrice) *
                             Convert.ToDecimal(quantity) *
                             (1 - Convert.ToDecimal(discount)))
        End Sub
        
        <RowBuilder("OrderDetails", RowKind.New)>  _
        Public Sub BuildNewOrderDetails()
            UpdateFieldValue("Quantity", 1)
            UpdateFieldValue("Discount", 0)
        End Sub
    End Class
End Namespace
Monday, March 12, 2012PrintSubscribe
Order Details: Add “Extended Price” Field

Let’s add an Extended Price field to show the final price of each line item in the order. This field will multiply price by quantity, and factor in the discount.

Switch to the Project Explorer, and select the Controllers tab. Expand OrderDetails, and right-click on Fields. Select New Field option.

Create New Field option for 'OrderDetails' controller in Code On Time Designer

For the new field, enter the following settings:

Property Text
Name ExtendedPrice
Type Currency
The value of this field is computed at run-time by SQL Expression True
SQL Formula
OrderDetails.UnitPrice * OrderDetails.Quantity * (1 - OrderDetails.Discount)
Label Extended Price
Data Format String c
Values of this field cannot be edited True

ExtendedPrice calculated field settings in Code On Time web application generator

Press OK to save the field. The OrderDetails alias used in the SQL Expression field above is referring to command1 of the Order Details controller. The text of this command can be found at Order Details / Commands / command1 node.

'OrderDetails' command1 Text

Your application will incorporate the SQL Formula in the SELECT statements composed at runtime. The statement will be equivalent to the following simplified example.

select *, 
    OrderDetails.UnitPrice * OrderDetails.Quantity * 
    (1 - OrderDetails.Discount) ExtendedPrice
from "Order Details" OrderDetails

This is the output produced in SQL Management Studio if you try executing the simplified statement.

Result of 'SQL Formula' incorporated in SELECT statement

To make sure that the field will be displayed in the application pages, we’ll bind the field to the data view using data fields. Go back to the field. Select the Data Fields tab. On the action bar, press New | New Tab.

'New Data Field' option in Code On Time Designer

Set the following settings for the data field:

Property Text
View createForm1
Category New Order Details

New data field in 'createForm1'

Press OK to save the data field. Use the same method to create two more data fields:

Property Text
View editForm1
Category Order Details

Property Text
View grid1
Category n/a

List of new data fields in Code On Time Designer

Regenerate the application, and navigate to Order Form page. Select an order. For each order detail, you will see a calculated Extended Price field.

Extended Price calculated field added to Order Details controller

Saturday, March 10, 2012PrintSubscribe
Order Details: Configuring Lookup Fields

Let’s make similar changes to the Order Details controller. We’ll make the ProductID lookup open in search mode upon creating a new order detail. When selecting a product, the Unit Price will also copy over into the order detail.

Switch to the Designer, and expand to Order Form / c100 / dv101 / createForm1 / c1 – New Order Details / ProductID / ProductID. Double-click on the the ProductID field reference.

ProductID field node in Code On Time web application Designer

Change the following settings:

Property Text
Data Value Field ProductID
Data Text Field ProductName
Copy UnitPrice=UnitPrice
Search on Start True
Activate if Blank True
Lookup window description Select a product

ProductID Lookup configuration in Code On Time Designer

Press OK to save the field, and press Generate in the top left corner. Wait until the Preview window refreshes with the regenerated web application.

Navigate to the Order Form page, and select any order.

A lookup will open prompting you to select a product.

'Select a product' lookup in Code On Time web application

Select a product, and you will see that Unit Price of the product has been copied into the order detail.

New Order Details screen in Code On Time web application