Application Builder

Blog
Application Builder
Tuesday, February 12, 2019PrintSubscribe
Sort Order of Item in Data Lookups
This is the view createForm1 of Products controller. Lookup field CategoryID is configured as a radio button list. Each list item represents a row from Categories lookup table. Items are sorted in an alphabetical order.


The data model of Products controller is based on the table with the same name. A foreign key consisting of CategoryID column is referencing Categories table. Field CategoryName is borrowed from Categories table to be displayed as an alias of Products.CategoryID.


If a dedicated model for Categories table is created, then the app builder will produce a corresponding controller and configure Products.CategoryID field as a lookup.

App builder will set Items Data Controller property of CategoryID field to "Categories", Data Value Field to "CategoryID", and Data Text Field to "CategoryName". Both fields are referencing the fields of the controller specified as a source of items.

Field Items Data View property is left blank by default.


Categories will be ordered by CategoryName when selected from Categories table if Items Data View is not specified.
Set Products / Fields / CategoryID / Items Data View to "grid1". This will force your app to take into account the sort expression of Categories/views/grid1 view. If the sort expression is specified, then the items will be ordered accordingly.

You can set up sort order and sort type directly in the Categories model. For example, you can configure the model to sort categories in descending order.


Alternatively, select Categories/views/grid1 view and enter "CategoryName desc" without quotes in Sort Expression property.

Generate the app and observe the new sort order of categories in the lookup.


Note that the custom sort order will also apply to any other style of lookup.

Consider adding a numeric column to Categories table to have a a data-driven custom sort order.
Monday, November 26, 2018PrintSubscribe
Limit Access For Particular User Name

Let’s say you want to prevent a user with a certain name from being able to access your app pages.

Application framework provides a centralized method of content retrieval, which makes possible creative ways of content production at runtime. You can produce a custom output for the user with the name mark no matter what page he is trying to access.

If the user with the name mark is logged in then he will be presented with the following message on any application page.

Data Aquarium application framework allows dynamic manipulation and substituion of the content returned by the app to the end user.

Create a code file in ~/custom folder of your app.

Custom code file in the app created with Code On Time.

Enter the following definition of partial class ApplicationServices.

using System.Collections.Generic;
using System.Web;

namespace MyCompany.Services
{
    public partial class ApplicationServices 
    {
        public override void LoadContent(HttpRequest request, HttpResponse response, 
            SortedDictionary<string, string> content)
        {
            // Let the framework to load the file from the file system.
            // Typically the content will be retrieved from ~/app/pages folder.
            base.LoadContent(request, response, content);
            if (content.ContainsKey("File"))
            {
                // The framework has located a physical file, let's check the user identity.
                var identity = HttpContext.Current.User.Identity;
                if (identity.IsAuthenticated && identity.Name == "mark")
                {
                    // remove the original file to prevent any default parsing of its contents
                    content.Remove("File");
                    // simulate the result of parsing by providing Title and Content of the page.
                    content["PageTitle"] = "Mark, go away";
                    content["PageContent"] =
                        "<div data-app-role=\"page\">" +
                        "<h1>Mark has no access!</h1>" +
                        "<p>Please log out or close the browser!</p>" +
                        "</div>";
                }
            }
        }
    }
}

An authenticated user with a name other than mark will see the application pages as defined at design time.

A data page in the app created with Code On Time app builder.

Friday, November 2, 2018PrintSubscribe
Increasing Command Timeout

Commands issued by the application framework use a default timeout of 30 seconds. When necessary, this timeout can be changed to fit application requirements.

Let’s change the default command timeout to 5 minutes.

Start Code On Time web application generator, and click on the project name. Then, click on Develop option. The project will be opened in Visual Studio.

In the Solution Explorer, right-click on ~\App_Code folder and press Add | Add New Item.

Adding a new item under 'App_Code' folder in the project.

Select Class from the list and press Add to create the file. Replace the code with the following:

C#:

using System;
using System.Data.Common;

namespace MyCompany.Data
{
    public partial class Controller
    {
        protected override DbCommand CreateCommand(DataConnection connection)
        {
            DbCommand command = base.CreateCommand(connection);
            command.CommandTimeout = 60 * 5;
            return command;
        }
    }
}

Visual Basic:

Imports Microsoft.VisualBasic
Imports System
Imports System.Data.Common

Namespace MyCompany.Data
    Partial Public Class Controller
        Protected Overrides Function CreateCommand(connection As DataConnection) As DbCommand
            Dim command As DbCommand = MyBase.CreateCommand(connection)
            command.CommandTimeout = 60 * 5
            Return command
        End Function
    End Class
End Namespace

Save the file.

Let’s make sure that the application uses the new command timeout. Place a breakpoint at the last line in the method, and press F5 key to run the web app.

Placing a breakpoint in the class.

Navigate to any page that has a data view. The application will stop at the breakpoint. Mouse over the command timeout property – the value will now be “300”.

The value of 'CommandTimeout' property has been changed.

Continue to Cloud On Time of OSX