Blog

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(8) OAuth Scopes(1) OAuth2(11) 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(80) 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
Friday, November 2, 2012PrintSubscribe
Navigate Action

The application framework supports Navigate action to allow directing end users to any web resource. This includes internal pages.

For example, the Orders edit form is displayed below. Let’s create a button on the form that will allow viewing the details of the customer that made the order.

Orders edit form created by Code On Time Designer.

Start the Project Designer. In the Project Explorer, switch to the Controllers tab. Right-click on Orders / Actions /ag2 (Form) node, and press New Action.

New Action context menu option for Orders controller.

Assign the following values and save the action:

Property Value
Command Name Navigate
Command Argument Customers.aspx?_controller=Customers&CustomerID={CustomerID}&_commandName=Select&_commandArgument=editForm1
Header Text View Customer Details

The command argument is using data controller URL parameters.

On the toolbar, press Browse.

Navigate to the Orders page, and select an order. Take note of the customer.

Orders edit form with 'View Customer Details' button.

Press the View Customer Details button to navigate to the Customers page. The customer record associated with the order is activated.

The customer relevant to the order has been accessed.

When Insert, Update, Delete, or Cancel actions are activated, the user will be returned to the Orders page. For example, if the user presses Close button, this activates the Cancel action and the client library will return the user to the previous page.

Open in New Window

The Navigate action can also open a new window.

Go back to the Project Designer and change the command argument:

Property New Value
Command Argument _blank:Customers.aspx?_controller=Customers&CustomerID={CustomerID}&_commandName=Select&_commandArgument=editForm1

Press OK to save. On the toolbar, press Browse.

When the user presses the View Customer Details button, the customer will be opened in a new tab or window.

Customers form opened in new tab.

Using Hyperlink Format String

The Hyperlink Format String property of a data field can be used as an alternative to Navigate action.

In the Project Explorer, double-click on Orders / Views / editForm1 / c1 – Orders / CustomerID –> CustomerCompanyName data field node.

CustomerID data field in editForm1 view of Orders controller.

Change the following:

Property New Value
Tool Tip View Customer Details
Hyperlink Format String Customers.aspx?_controller=Customers&CustomerID={CustomerID}&_commandName=Select&_commandArgument=editForm1

Press OK to save. On the toolbar, press Browse.

The Customer Company Name will render as a link.

Orders form with Customer Company Name formatted as a hyperlink.

Clicking on the link will navigate to the details of the customer.

Customer details activated.

Thursday, November 1, 2012PrintSubscribe
URL Parameters

Data views on the page can detect and use certain parameters specified in the URL in the address bar of the web browser.

Filter By Field

The picture below shows an unfiltered list of customers.

Unfiltered list of customers.

A URL parameter will act as a filter for any data view on the page if the filter name matches to the name of a data field in the view. Data rows with field values unequal to the filter value will be eliminated from the data view.

For example, the following parameter will show only customers that reside in the country of “Belgium”.

Parameter Value
Country Belgium

http://demo.codeontime.com/Northwind/Pages/Customers.aspx?Country=Belgium

Customers grid view with a field filtered. The filtered field has been hidden.

The data view will hide the filtered column to prevent display of duplicate values.  The column can be shown using the “_display” parameter.

Parameter Value
Country Belgium
_display Country

http://demo.codeontime.com/Northwind/Pages/Customers.aspx?Country=Belgium&_display=Country

The filtered field has been displayed with the URL parameter 'display'.

Any combination of filters can be applied using URL parameters. Multiple fields can be listed in a comma-separated list for the “_display” parameter.

Parameter Value
Country Belgium
City Bruxelles
_display Country,City

http://demo.codeontime.com/Northwind/Pages/Customers.aspx?Country=Belgium&City=Bruxelles&_display=Country,City

Customers grid view with two filters applyed using URL parameters.

Select Record

A record can be selected using URL parameters that specify the “Select” command, a command argument to specify the view, and the primary key of the record. The specified field will be hidden on the form. When the _commandName and _commandArgument parameters are used, all controllers will perform the action unless the controller is specified using “_controller”.

Parameter Value
_commandName Select
_commandArgument editForm1
ProductID 1
_controller Products

http://demo.codeontime.com/Northwind/Pages/Products.aspx?_commandName=Select&_commandArgument=editForm1&ProductID=1&_controller=Products

URL parameters used to select a record in edit form.

Edit Record

A record can be edited with URL parameters similar to selecting a record. The only difference is the use of “Edit” command name instead of “Select”.

Parameter Value
_commandName Edit
_commandArgument editForm1
ProductID 1
_controller Products

http://demo.codeontime.com/Northwind/Pages/Products.aspx?_commandName=Edit&_commandArgument=editForm1&ProductID=1&_controller=Products

URL parameters to open a record in edit mode.

Note that successfully performing any action in form view will navigate to the previous page, instead of going back to the grid. This behavior makes it easier to build a logical workflow for users without having to write redirection logic.

Create New Record

URL parameters can be used to open the form in new mode by specifying the “New” command and correct view.

Parameter Value
_commandName New
_commandArgument createForm1
_controller Orders

http://demo.codeontime.com/Northwind/Pages/Orders.aspx?_commandName=New&_commandArgument=createForm1&_controller=Orders

New record form opened using URL parameters.

Initial values can be specified for each field. These fields will also be hidden by default, and require “_display” parameter to be shown.

Parameter Value
_commandName New
_commandArgument createForm1
_controller Orders
ShipName John
_display ShipName

http://demo.codeontime.com/Northwind/Pages/Orders.aspx?_commandName=New&_commandArgument=createForm1&_controller=Orders&ShipName=John&_display=ShipName

New record form opened with initial values specified in the URL.

When specifying an initial value for a lookup, both the lookup field and the alias field must be specified.

Parameter Value
_commandName New
_commandArgument createForm1
_controller Orders
ShipName John
CustomerID AROUT
CustomerCompanyName Around the Horn
_display ShipName,CustomerID,CustomerCompanyName

http://demo.codeontime.com/Northwind/Pages/Orders.aspx?_commandName=New&_commandArgument=createForm1&_controller=Orders&ShipName=John&CustomerID=AROUT&CustomerCompanyName=Around the Horn&_display=ShipName,CustomerID,CustomerCompanyName

New record form opened with initial values specified in the URL and foreign key fields specified.

Tuesday, October 30, 2012PrintSubscribe
Order Form Sample–Part 25

The calculation will analyze Order ID and current Freight value:

If the order total is greater than $100, then Freight will be $19.95 flat.
Otherwise, Freight is $3.95.

The Order Form page will allow overriding the Freight value.

In the Project Explorer, double-click on Orders / Fields / Freight (Decimal) field node.

Freight field node selected in Orders controller of the Project Explorer.

Change the Context Fields:

Property New Value
Context Fields OrderDetails,Freight

Press OK to save.

If you implemented an SQL Business Rule to calculate Subtotal and Total, continue reading the next section. If you implemented the C# / Visual Basic Business rule, skip the next section. You may also use JavaScript – skip the next two sections.

SQL Business Rule

In the Project Explorer, double-click on Orders / Business Rules / Calculate (Sql / Execute) node.

Calculate SQL Business Rule in Orders controller of Project Explorer.

Append the script:

Property New Value
Script
select @Subtotal = sum(unitprice * quantity * (1 - discount)) 
from [Order Details] 
where OrderID = @OrderID

set @Total = @Subtotal + @Freight

if (@Freight is not null or @Freight = 0 
    or @Freight = 3.95 or @Freight = 19.95)
begin
    if (@Total > 100)
        set @Freight = 19.95
    else 
        set @Freight = 3.95
end

Press OK to save.

Code Business Rule

Right-click on Orders / Business Rules / Calculate (Code / Execute) node, and select Edit Rule in Visual Studio.

Edit Rule in Visual Studio context menu option for a Calculate code business rule.

Append the following code.

C#:

using System;
using MyCompany.Data;

namespace MyCompany.Rules
{
    public partial class OrdersBusinessRules : MyCompany.Data.BusinessRules
    {

        [Rule("r101")]
        public void r101Implementation(
                    int? orderID,
                    string customerID,
                    string customerCompanyName,
                    int? employeeID,
                    string employeeLastName,
                    DateTime? orderDate,
                    DateTime? requiredDate,
                    DateTime? shippedDate,
                    int? shipVia,
                    string shipViaCompanyName,
                    decimal? freight,
                    string shipName,
                    string shipAddress,
                    string shipCity,
                    string shipRegion,
                    string shipPostalCode,
                    string shipCountry,
                    decimal? subtotal)
        {
            object total = null;
            using (SqlText calc = new SqlText(@"select sum(unitprice * 
                    quantity * (1 - discount)) from 
                    [Order Details] where OrderID= @OrderID"))
            {
                calc.AddParameter("@OrderID", orderID);
                total = calc.ExecuteScalar();
            }

            if (DBNull.Value.Equals(total))
            {
                UpdateFieldValue("Subtotal", 0);
                UpdateFieldValue("Total", 0);
            }
            else
            {
                UpdateFieldValue("Subtotal", Convert.ToDecimal(total));
                UpdateFieldValue("Total", Convert.ToDecimal(total) + freight);
            }

            if (!freight.HasValue || freight.Value == 0 ||
            freight.Value == 3.95m || freight.Value == 19.95m)
                if (Convert.ToDecimal(total) > 100)
                    UpdateFieldValue("Freight", 19.95);
                else
                    UpdateFieldValue("Freight", 3.95);
        }
    }
}

Visual Basic:

Imports MyCompany.Data
Imports System

Namespace MyCompany.Rules

    Partial Public Class OrdersBusinessRules
        Inherits MyCompany.Data.BusinessRules

        <Rule("r101")> _
        Public Sub r101Implementation( _
                    ByVal orderID As Nullable(Of Integer), _
                    ByVal customerID As String, _
                    ByVal customerCompanyName As String, _
                    ByVal employeeID As Nullable(Of Integer), _
                    ByVal employeeLastName As String, _
                    ByVal orderDate As Nullable(Of DateTime), _
                    ByVal requiredDate As Nullable(Of DateTime), _
                    ByVal shippedDate As Nullable(Of DateTime), _
                    ByVal shipVia As Nullable(Of Integer), _
                    ByVal shipViaCompanyName As String, _
                    ByVal freight As Nullable(Of Decimal), _
                    ByVal shipName As String, _
                    ByVal shipAddress As String, _
                    ByVal shipCity As String, _
                    ByVal shipRegion As String, _
                    ByVal shipPostalCode As String, _
                    ByVal shipCountry As String, _
                    ByVal subtotal As Nullable(Of Decimal))
            Dim total As Object = Nothing
            Using calc As SqlText = New SqlText(
                    "select sum(unitprice * quantity * (1 - discount)) " +
                    "from [Order Details] where OrderID=@OrderID")
                calc.AddParameter("@OrderID", orderID)
                total = calc.ExecuteScalar()
            End Using
            If DBNull.Value.Equals(total) Then
                UpdateFieldValue("Subtotal", 0)
                UpdateFieldValue("Total", 0)
            Else
                UpdateFieldValue("Subtotal", Convert.ToDecimal(total))
                UpdateFieldValue("Total", Convert.ToDecimal(total) + freight)
            End If
            If Not freight.HasValue Or freight.Value = 0 Or
                freight.Value = 3.95 Or freight.Value = 19.95 Then
                If total >= 100 Then
                    UpdateFieldValue("Freight", 19.95)
                Else
                    UpdateFieldValue("Freight", 3.95)
                End If
            End If
        End Sub
    End Class
End Namespace

Save the file.

JavaScript Business Rule

Double-click on Orders / Business Rules / Calculate (JavaScript / After) node.

Calculate JavaScript Business Rule in Orders controller of Project Explorer.

Append the following:

Property New Value
Script
[Total] = [Subtotal] + [Freight];


if ([Freight] || [Freight] == 0 || 
    [Freight] == 3.95 || [Freight] == 19.95)
{
    if ([Total] > 100)
    {
        [Freight] = 19.95;
    }
    else 
    {
        [Freight] = 3.95;
    }
}

Press OK to save.

Viewing the Results

On the toolbar, press Browse. Edit an order, and change the Freight to “0”. When you tab away from the field, the freight will be recalculated.

When Freight is cleared and Total is below $100, freight is calculated to be $3.95.

If you change the order details so that the Subtotal is greater than $100, you will see Freight be recalculated to $19.95.

When Freight is cleared and Total is above $100, freight is calculated to be $19.95.