Release Notes

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
Release Notes
Tuesday, May 25, 2010PrintSubscribe
Intelligent Master-Detail, Grid Templates, etc.

The new update has been released.

The following enhancements were included:

  1. Code generator will automatically detect presence of Visual Studio 2010 and use included Web Developer Web Server to run generated ASP.NET projects. This feature allows using the code generator on computers with the new Visual Studio 2010. If both, Visual Studio 2008 and Visual Studio 2010 are installed then the newer web server is launched. Note that the applications are still generated as ASP.NET 3.5 web sites. Support for ASP.NET 4.0 is expected to be available in June of 2010.
     
  2. Master-detail support has been enhanced with Auto Hide feature. The JavaScript client library of Web Site Factory applications will automatically hide detail records if a master view does not have a selected record.  This will effect classic, stacked, and tabbed page layouts automatically created by the code generator.  The first two master-detail layouts will display only a grid of master records up until a selection is made. The tabbed layout will hide the detail tabs until a user makes a selection of a master record.
     
    The user interface elements that present the detail records will also disappear if a user is creating a new master record or if a selected master record has been deleted.
     
    The new library will also eliminate server requests if the master view has refreshed without the selected key being changed. This significantly improves overall performance of the generated ASP.NET+AJAX web sites. 
     
    Intelligent master-detail data presentation eliminates hours of complicated coding and make presentation of complex data layouts easy within the boundaries of a single web page.
     
  3. Grid views now support three types of custom row templates. If controller Customers has a grid view with id grid1 then the JavaScript client library will be looking for templates with the following names: Customers_grid1, Customers_grid1_selected, and Customers_grid1_new.

    The first template will be used to format the row in edit mode. The second template will be used to format the selected row. The third template will be used to format the new row. Learn more about custom grid templates at /blog/2008/09/custom-templates-for-ajax-grids-in-data.html.

We will post video tutorials explaining these features on our YouTube channel.

Friday, May 21, 2010PrintSubscribe
Sort and Filter

Web Site Factory applications can now use declarative sort and filter expressions on data views. This feature allows effecting just-in-time ORDER BY and WHERE clause automatically created by the application framework at runtime without the need to modify the command.

Multiple views can use the same command and offer different sort and filter expression.

Sort Expression

Run Code OnTime Generator and select your project. Click Design button and select the data controller. Activate Views tab and choose grid1. The following screen is presented if you edit the view and enter the sort expression. Sort expression is a list of data field names of this view, each followed by optional asc or desc suffix.

Here is how the grid1 view looks if you enter the sort expression in the application created from the Northwind database.

image

If you save the changes and preview the data controller in the Test Bench then the initial list of customers will look like then one in the picture.

image

The actual SQL  statement executed at runtime looks like the one below. Notice that ORDER BY in the common table expression has been expanded with the actual table column names represented by Country and CompanyName fields.

with page_cte__ as (
select
row_number() over (order by "Customers"."Country" ,"Customers"."CompanyName"  desc) as row_number__
,"Customers"."CustomerID" "CustomerID"
,"Customers"."CompanyName" "CompanyName"
,"Customers"."ContactName" "ContactName"
,"Customers"."ContactTitle" "ContactTitle"
,"Customers"."Address" "Address"
,"Customers"."City" "City"
,"Customers"."Region" "Region"
,"Customers"."PostalCode" "PostalCode"
,"Customers"."Country" "Country"
,"Customers"."Phone" "Phone"
from
"dbo"."Customers" "Customers"

)
select * from page_cte__ where row_number__ > 0 and row_number__ <= 5

Filter Expression

Filter expression must be compatible with the back-end database server syntax. Data field names used in filter are automatically expanded into appropriate SQL expressions as defined in command.

Suppose you enter the following filter expression in the Northwind sample.

image

This filter expression will result in the following expression executed by the framework at runtime.

with page_cte__ as (
select
row_number() over (order by "Customers"."Country" ,"Customers"."CompanyName"  desc) as row_number__
,"Customers"."CustomerID" "CustomerID"
,"Customers"."CompanyName" "CompanyName"
,"Customers"."ContactName" "ContactName"
,"Customers"."ContactTitle" "ContactTitle"
,"Customers"."Address" "Address"
,"Customers"."City" "City"
,"Customers"."Region" "Region"
,"Customers"."PostalCode" "PostalCode"
,"Customers"."Country" "Country"
,"Customers"."Phone" "Phone"
from
"dbo"."Customers" "Customers"

where
(
ContactTitle='Owner')
)
select * from page_cte__ where row_number__ > 0 and row_number__ <= 5

The filter expression is inserted verbatim in the command text.

Filter expressions support parameters. Parameters must be prefixed by "@" or ":" symbol. You must implement a business rules class for the data controller with a property or field that matches the parameter name.

If you modify the filter expression as follows then additional configuration steps are needed.

ContactTitle = @ContactTitleFilter

First you need to define the name of the business rules class for your data controller. We have entered CustomerRules in the field Handler as displayed in the screen shot.

image

Then you need to generate the application. This will create the business rules class in the file ~/App_Code/Rules/CustomerRules.cs(vb).

The file will not be overwritten if you re-generate the code next time. It is safe to place your custom business logic in it. The sample filter implementation of property ContactTitleFilter in C# is performing conditional filtering of customers by Contact Title.

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

namespace MyCompany.Rules
{
    public partial class CustomerRules : MyCompany.Data.BusinessRules
    {
        public string ContactTitleFilter
        {
            get
            {
                if (Context.User.IsInRole("Administrators"))
                    return "Owner";
                else
                    return "Sales Agent";
            }
        }
    }
}

This is the screen shot of Customers screen presented to user account user/user123%.

image

Sunday, May 9, 2010PrintSubscribe
Classic Master-Details Layout

New page layout is now available to subscribers. Numerous enhancements to client-side JavaScript library have allowed us to implement a smooth AJAX-enabled layout of master-detail data pages with intelligent scrolling management.

Classic master-detail layout will place master view at the top of the page and all children at the bottom of the page. Each child will be placed on a dedicated tab so that only master and one child data views are visible at any time. The details of the selected master record are automatically displayed on the side bar and stay visible even if the page is scrolled.

You can see the live demo of the new layout at http://dev.codeontime.com/demo/websitefactory6.

Here is the screenshot of the Classic layout with master grid and child tabs. The master grid in the screenshot presents a list of customers. The child tabs provide access to customer orders, customer demographic data, and order details. Users can click on any master row and see detail records of the active tab displayed in an instant.

image

Child tabs intelligently delay loading of the content. The records are retrieved from the database only when a tab is visible. One master and a dozen of child tabs will execute only two web calls to create the page content.

If a link in the first column in any row is selected then a parent record is displayed with the child records refreshed accordingly.

image

You can enable the new layout on the Layout page of the Web Site Factory project wizard. This layout has now become the default layout of the new projects.

image

The enhancements have also affected the Stacked page layout and any custom page layouts with more than one data view container  on a page. The pages will refresh smoothly and will intelligently manage page scrolling and resizing.