web application generator

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
web application generator
Thursday, May 10, 2012PrintSubscribe
Activating a Stored Procedure With a Custom Search Dialog

Let’s create a confirmation data controller to allow selecting a Customer ID. The value will be passed to the enhanced output caching script as a parameter.

Click on the Home link in the bread crumbs displayed under the toolbar at the top of the Project Designer. Select Controllers tab and choose New | New Controller option on the action bar.

Create a new data controller in Project Designer of Code On Time web application generator

Enter the following properties and click OK button to create the controller.

Property Value
Controller Name CustOrderHist_Params

Right-click CustOrderHist_Params / Fields node in Project Explorer and select New Field option.

Adding a new field to a data controller in Project Exporer

Enter the new field properties as follows.

Property Value
Name CustomerID
Type String
Length 5
Label Customer
Items Style Lookup
Data Value Field CustomerID
Data Text Field CompanyName
Lookup window description Select a customer
Search by First Letter Yes

Click OK button to create the field.

The field node in the Project Explorer will look as follows.

The confirmation data controller with a single lookup input field in a Code On Time web application project

Now it is time to define a Search action in the output cache controller CustOrderHist_Cache . The action will display the confirmation data controller CustOrderHist_Params to a user and cause the CustOrderHist_Cache controller to refresh the data with the collected parameter CustomerID.

Right-click the CustOrderHist_Cache / Actions / ag5 (ActionBar) – Actions  node in Project Explorer and select the New Action option.

Adding a new action to an action group in Project Explorer of Code On Time web application generator

Enter the properties of the action and click OK button to save the changes.

Property Value
Command Name Search
Confirmation

_controller=CustOrderHist_Params
_width=500
_title=Select a Customer to View History
_shortcut=true

Click Browse on the Project Designer toolbar and navigate to Cust Order Hist Cache page.

The new action can be accessed under Actions option of the action bar.

Notice that the Search action has replaced the standard search bar activator icon on the left of the Quick Find on the action bar. The icon will activate the Search action.

If you click the refresh icon in the bottom right corner of the grid view then this will also activate the first available Search action.

Action 'Search' replaces the standard search bar activator icon located on the left side of the Quick Find on action bar

Activate the Search action with any of three methods listed above. The application framework will create a modal confirmation data controller.

A modal confirmation data controller activate to confirma 'Search' action

Select a customer in the lookup window.

Selecting a customer in lookup window with the 'Search by First Letter' feature enabled

Click OK button in “Select a Customer to View History” modal popup. This will confirm the Search action and will the pass the selected Customer ID to the output caching script.

Confirming an action with a modal confirmation data controller

The enhanced output caching script will detect that the parameter @Parameters_CustomerID is not null and will use its value as a filter.

The enhanced output caching script uses the value of @Parameters_CustomerID parameter as a filter

Thursday, May 10, 2012PrintSubscribe
Changing Output Caching Script to Use Confirmation Parameters

A web application can activate an output caching script with the built-in filtering capabilities or with a master-detail relationship filter. The former requires a certain effort from a user and the latter works transparently.

You can replace the standard built-in filtering capabilities with a custom search bar or search dialog. Application user will select a customer ID in a dedicated input screen. The selected value will be passed to the output caching script as a parameter.

A custom action with an inline or modal confirmation data controller must be defined in the output cache controller. The output caching script needs to be changed to process the parameter value collected in the confirmation data controller.

Select the CustOrderHist_Cache / Business Rules / Select in grid1 (SQL / Before) business rule node in Project Explorer.

A business rule node selected in Project Explorer

Replace its Script property with the following text and press OK button to save the changes.

/*********************************************************
 The application framework will delete the "Debug" section
 from the business rule. The parameter values will be 
 provided by the application framework at runtime.
*********************************************************/

-- Business Rule Parameters: Debug
declare @BusinessRules_RequiresRowCount int
declare @BusinessRules_UserName nvarchar(40)
declare @CustomerID_FilterValue nvarchar(5)
declare @Parameters_CustomerID nvarchar(5)

set @BusinessRules_RequiresRowCount = 1
set @BusinessRules_UserName = 'username'
set @CustomerID_FilterValue = 'ANTON'
-- Business Rule Parameters: End Debug

/*********************************************************
 This is the actual business rule implementation 
*********************************************************/

if @CustomerID_FilterValue is null
    if @Parameters_CustomerID is not null
    begin
      -- Delete the previously cached data associated with the current user
      -- if it is not matched to the Customer ID selected in the confirmation
      -- data controller.
      delete from CustOrderHist_Cache
      where 
        CacheUserName = @BusinessRules_UserName and 
        CustomerID <> @Parameters_CustomerID
      -- Use the confirmation data controller field value as a filter
      set @CustomerID_FilterValue = @Parameters_CustomerID
    end

if @BusinessRules_RequiresRowCount = 1 
    and @CustomerID_FilterValue is not null
    and not exists (
        select 1 from CustOrderHist_Cache
        where CacheUserName = @BusinessRules_UserName and 
            CustomerID = @CustomerID_FilterValue and
            CacheExpires > getdate()
    )
begin
    -- delete the data cached by the current user if it has expired.
    delete from CustOrderHist_Cache
    where CacheUserName = @BusinessRules_UserName and 
        CustomerID = @CustomerID_FilterValue
    -- create temporary table to capture the custom result set
    create table #CustOrderHist(
        ProductName nvarchar(50),
        Total int
    )
    -- execute the stored procedure and capture the custom result set
    insert into #CustOrderHist
    exec [CustOrderHist] @CustomerID_FilterValue
    -- copy the custom result set to the Output Cache Table
    insert into CustOrderHist_Cache(
        ProductName, Total, CustomerID, 
        CacheID, CacheUserName, CacheExpires)
    select 
        ProductName,                    -- column from #CustOrderHist
        Total,                          -- column from #CustOrderHist
        @CustomerID_FilterValue,        -- stored procedure parameter
        newid(),                        -- generic primary key value
        @BusinessRules_UserName,        -- the application user name
        dateadd(second, 30, getdate())  -- cache expiration date
    from #CustOrderHist
    -- drop the temporary table with the custom result set
    drop table #CustOrderHist
end

The debug section at the top of the script will be removed by the application framework at runtime.

The highlighted parameter @Parameters_CustomerID will have a value of the customer ID selected in the confirmation data controller. If the action that has caused the execute of this SQL Business Rules does not have a modal or inline confirmation, then the parameter value will always remain equal to NULL.

Tuesday, May 8, 2012PrintSubscribe
Feature: Adaptive Filtering

Code On Time web applications offer adaptive filtering out of the box. Adaptive filters limit the list of filtering options according to the current data set and other active filtering options.

For example, consider the Northwind sample web application. Navigate to the Products page. Mouse over the Category Name column header, and activate the dropdown. Click on “Beverages” filter option.

Select the 'Beverages' filtering option from the Category Name column header.

You will see the list of products has been filtered to only display those records with a Category Name of “Beverages”.

Now, filter Supplier Company Name by “Exotic Liquids” using the same method. The combination of filters has produced two matching records.

Filters applied on 'Category Name' and 'Supplier Company Name' fields in a list of products.

Activate the dropdown for Category Name again. You will see that the list of categories has been reduced to only those that match the other filtering constraints (Supplier Company Name equals Exotic Liquids).

Category Name filtering options have been adaptively filtered to only show options relevant to the current data set.

Clear the Category filter by clicking on the text “Category Name equals Beverages”.

Clear a filter by clicking on the filter description.

Filters do not require lookup tables. The filter options are drawn from the data set itself. For example, activate the drop down for Reorder Level in the list of Products. If Supplier Company Name is filtered to “Exotic Liquids”, you can see that the only available filtering options are “10” and “25”, which match the current data set (shown above).

Reorder Level filtering options have been reduced due to adaptive filtering.

You can clear the whole filter by pressing the “x” on the right side of the filter header.

Clear the entire filter by clicking on the 'x' icon at the very right of the filter detail bar.

Filters will continue to adapt regardless of the complexity of a filtering operation. For example, activate the dropdown for Category Name, and click on “Filter…” option.

Filter option on the dropdown of 'Category Name' header.

Toggle the checkboxes next to the following categories: “Beverages”, “Dairy Products”, “Meat/Poultry”. Press OK to apply the filter.

Category Name multi filter selection with several options checked.

Click on text Unit Price in its header to sort the products in descending order of price.

List of products sorted in descending order of Unit Price.

Activate the Unit Price dropdown, and click on Number Filters | Between. Write “10” and “30” in each box, respectively.

Filter 'Unit Price' to all records between '10' and '30'.

Press OK to apply the filter.

Activate the Supplier Company Name dropdown, and click on “Filter…” option. Checkmark several suppliers from the list, and press OK to apply the filter.

Include several filtering parameters for 'Supplier Company Name' field

Activate the dropdown for Reorder Level and click on “Filter…” option. Choose several reorder levels and press OK to apply the filter.

Include several filtering parameters for 'Reorder Level' field

The filtering options will all be displayed in a filter detail bar underneath the action bar. You may have noticed that as you made each filter, the subsequent filters had less values. This is due to the power of adaptive filtering.

You can also click on the text of any specific filter description to remove that filter.

Clear a filter from the list of products by clicking on the specific filter description.