Blog: Posts from April, 2012

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
Posts from April, 2012
Thursday, April 12, 2012PrintSubscribe
Controlling Modal Presentation of Application Form Views

By default, Code On Time web applications use modal forms to display child data views and master data views without children, such as the one in the picture below. (In this example, the data fields in the category are floating in the form, instead of the traditional top-down presentation.)

Orders child data view in modal form view in Code On Time web application

The Project Wizard allows you to disable this functionality across all application pages.

Start the web application generator, click on the project name, and select Settings. Choose Features option. In the list on the left side of the page, select Form Properties. Uncheck “Show modal forms in master data views without children and in child data views”.

'Show modal forms in master data views without children and in child data views' property in Code On Time Project Wizard

Press Finish to get to the Summary page. Select Refresh to have the generator recreate the pages without modal form views. If any of the pages have been modified, then the changes will not be applied, according to the refreshing conditions.

As this property does not apply to any specific controllers, none of them need to be selected for refresh. Press Refresh, and choose Yes to confirm the operation.

Confirmation of Refresh of Code On Time web application

Continue to generate the application.

When the web application opens in your default web browser, navigate  to Customers page, select a customer, and view any order. The data views will drill into form view instead of being displayed in a lightbox style above the list of Orders.

Master and child data view using inline form view in Code On Time web application

You can also enable or disable presentation of child views on a data view level of individual pages.

Wednesday, April 11, 2012PrintSubscribe
Calculating Values via “Custom” Action

The following screen shows  a customer record from the Northwind sample presented in edit mode. Suppose that you want to display an action on the action bar that allows automatic calculation of certain field values.

View 'editForm1'  in the Customers data controller of the Northwind sample

Start the application generator and click on the project name on the start page. Select the Design option to bring up the Project Designer.

Activate the Controllers tab in Project Explorer, right-click Customers / Actions / ag4 (ActionBar) node and select New Action.

Adding a new action in a Code On Time web application

Enter the following values in the properties of the action.

Property Value
Command Name Custom
Command Argument CalcValues
Header Text Calculate Values
When Last Command Name Edit

Click OK button to save the action.

Press Browse on the tool bar and start editing any customer record. You will notice the Calculate Values option on the action bar.  The new action has been added to the “flat” action group ag4, which makes the action render directly on the action bar instead of being displayed as a child option of the parent action group menu item.

Custom action 'Calculate Values' on the action bar of a web app created with Code onTime application generator

Clicking on Calculate Values option will close the edit form and the grid view of customers will be displayed.

You can handle a custom action in a custom business rules or shared business rules class.

Here is an example of a shared business rules class that changes Company Name and Contact Name fields.

C#

using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using MyCompany.Data;

namespace MyCompany.Rules
{
    public partial class SharedBusinessRules : MyCompany.Data.BusinessRules
    {
        [ControllerAction("Customers", "Custom", "CalcValues")]
        public void ChangeCompanyAndContactNames(string companyName, string contactName)
        {
            UpdateFieldValue("CompanyName", companyName + "+");
            UpdateFieldValue("ContactName", contactName + "-");
        }
    }
}

Visual Basic:

Imports MyCompany.Data
Imports System
Imports System.Collections.Generic
Imports System.Data
Imports System.Linq

Namespace MyCompany.Rules
    Partial Public Class SharedBusinessRules
        Inherits MyCompany.Data.BusinessRules

        <ControllerAction("Customers", "Custom", "CalcValues")>
        Public Sub ChangeCompanyAndContactNames(ByVal companyName As String,
                                                ByVal contactName As String)
            UpdateFieldValue("CompanyName", companyName + "+")
            UpdateFieldValue("ContactName", contactName + "-")
        End Sub
    End Class
End Namespace

The implementation is invoking UpdateFieldValue method. The first argument of the method indicates the name of the data field. The seconds specifies the new value. Action “Custom” does not update the database. Any data fields changed during its execution will be packages and retuned to the client web browser. The client library of the application will replace the old values with the new ones.

Save the file ~/Rules/SharedBusinessRules.cs(vb), navigate to your application and start editing any customer record. Click Calculate Values and you will see that the characters “+” and “-” are added to the Customer Name and Contact Name fields. The record will remain in edit mode.

The effect of a custom business rule executed on the server in a web application created with Code On Time

Business rules have complete access to the entire set of Microsoft.NET APIs.

A more complex version of the business rules class processing the same Custom action is presented next.

C#:

using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using MyCompany.Data;

namespace MyCompany.Rules
{
    public partial class SharedBusinessRules : MyCompany.Data.BusinessRules
    {
        [ControllerAction("Customers", "Custom", "CalcValues")]
        public void ChangeCompanyAndContactNames(string companyName, 
            string city, string country, string customerID)
        {
            UpdateFieldValue("City", country);
            UpdateFieldValue("Country", city);
            string newCompanyName = companyName +  ": " + SqlText.ExecuteScalar(
                "select City + '/' + Country from Customers " +
                "where CustomerID = @CustomerID", customerID);
            UpdateFieldValue("CompanyName", newCompanyName);
        }
    }
}

Visual Basic:

Imports MyCompany.Data
Imports System
Imports System.Collections.Generic
Imports System.Data
Imports System.Linq

Namespace MyCompany.Rules
    Partial Public Class SharedBusinessRules
        Inherits MyCompany.Data.BusinessRules

        <ControllerAction("Customers", "Custom", "CalcValues")>
        Public Sub ChangeCompanyAndContactNames(ByVal companyName As String,
                ByVal city As String, ByVal country As String, ByVal customerID As String)
            UpdateFieldValue("City", country)
            UpdateFieldValue("Country", city)
            Dim newCompanyName As String = companyName + ": " + SqlText.ExecuteScalar(
                "select City + '/' + Country from Customers " +
                "where CustomerID = @CustomerID", customerID)
            UpdateFieldValue("CompanyName", newCompanyName)
        End Sub
    End Class
End Namespace

This is the result of action execution if you select the customer Around the Horn, start editing the record, and click Calculate Values option on the action bar.

  • Client-side values of fields City and Region are swapped and sent back to the client
  • The client-side value of the field Company Name is appended with the database values of  fields City and Country.

Values of fields 'City' and 'Country' are swapped. These values are also appended to the field 'Company Name'.

Similar calculations can be performed without the business rules class. If you are more comfortable with SQL language and consider yourself to be a database person then learn about implementing calculations with “SQL” action.

Wednesday, April 11, 2012PrintSubscribe
Changing Settings in an Existing Project

The Project Wizard allows you to change settings that will be applied to the entire application.

Settings can affect one of two things in the application – data controllers or pages. An example of a setting that affects the data controllers is enabling standard action column in all grid views. An example of a page setting is changing the page layout.

If you change any setting in the Wizard, then it is necessary to use the Refresh project action to have the changes reflected in the generated application.

However, changes will only be reflected in the project if the following two conditions are met:

  1. The page, user controls, or controller elements have not been changed in the Designer.
  2. The application and data controller baseline files have not been edited by hand.

If these conditions are not met, then the settings will only be applied to new pages and controllers added to the application at a later time. The verification of these conditions is performed by the application generator to prevent overwriting of project customization.

Consider the Layout setting, which affects the application pages. By default, the layout property is set to Classic. This will create a master view at the top of each page, and all child views in tabs underneath the master view.

Create a brand new Northwind sample application. As you go through the project wizard, leave the layout with the default property of Classic.

Layout page in Code On Time Project Wizard

To change the layout, select the project name on the start page of the web app generator, and choose Settings.

Settings option of a Code On Time web application

Click on the Layouts option.

Layouts page under Settings in Code On Time web application generator

Let’s change the default layout to Tabbed. This puts all master and child views on different tabs in a single page container.

Tabbed standard page layout enabled 

Press Finish to go to the Summary page, and click on Refresh. The layout option change only affects the pages, so just press the Refresh button.

Refresh screen for Northwind sample in Code On Time web application generator

Press OK to confirm the refresh, and proceed to generate the application.

The web application will open in your default web browser. The new tabbed layout will be implemented on all pages in the application.

Customers page with Tabbed Layout in Code On Time web application

Now, let’s add an action column to a select few controllers.

Switch back to the web application generator, select the project name, and click Settings. Navigate to the Features page, and switch to the Grid Properties section. Toggle the checkbox Enable standard action column in all grid views.

Features page of Code On Time Project Wizard with Standard Action Column property enabled

Press Finish, and on the summary page click Refresh. Check the box next to Orders and OrderDetails controllers. Press Refresh button at the bottom of the screen, and then press Yes to confirm the action.

Refreshing data controllers in a Code On Time web application

Click Generate, and wait for the web application to load in your web browser.

You can see that the Customers grid view has not been changed, as it was not included in the refresh.

Customers grid view without Action Column in Code On Time web application

If you switch to the Orders tab, you will see the new action column at work. Actions Edit and Delete are rendered in the first column of the grid view.

Orders grid view with Actions Column in Code On Time web application

Labels: Tutorials