Database Lookups

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
Database Lookups
Sunday, April 15, 2012PrintSubscribe
Automatic Display of Lookups

In some situations, you may want to streamline selection of lookup values when users are entering or editing data. For this purpose, lookup fields in Code On Time web applications have the “Activate If Blank” property. If this property is enabled, whenever a user opens an edit view and the lookup is blank, then the lookup window will activate automatically.

Let’s use an example. Create a sample Northwind application. Select the project name on the start page, and press Design.

In the Project Explorer, switch to the Controllers tab. Double-click on Orders / Fields / CustomerID node.

CustomerID field in Code On Time Project Explorer

Scroll down and toggle the checkbox next to “Activate If Blank”.

'Activate If Blank' property enabled in Code On Time Designer

Press OK to save the field.

Enable “Activate If Blank” for EmployeeID and ShipVia fields using the same method. Make sure to save each field. These fields will be activated in the order of the data fields in the view.

Select Browse on the tool bar to generate and open the application in your default web browser. Navigate to the Orders page. On the action bar, press New Orders.

The Customer ID lookup will automatically be activated, as the field is blank.

CustomerID lookup window activated when the field value is blank

Select a customer, and the Employee ID lookup will pop up right away.

Employee ID lookup window activated when the field value is blank

When you select an employee, then the Ship Via lookup will appear.

Ship Via lookup window activated when the field value is blank

This behavior will occur when you edit or create order records that have blank lookup fields, including inline edit or new modes in grid views.

Saturday, March 31, 2012PrintSubscribe
Dynamic Creation of Static Lookup Items

Suppose that you want to change a field that renders as a textbox into a static drop down list of items, such as the Reorder Level field in the Products controller of the Northwind sample. By default, users can enter any numeric value in the field.

'Reorder Level' field showing numbers and as a textbox

Let’s change this by offering a drop down list of predefined items, and have the item values displayed as words.

You can do this at design time, as explained in Creating Static Lookup Items. However, there may be other situations when you don’t want to change the physical properties of the application. For example, the static items maybe displayed only to users in specific roles. For this purpose, you can use virtualization node sets.

First, you will need to enable shared business rules.

Next, switch to the web application generator, select the project name, and press Develop. This will open the project in Visual Studio.

Develop button in Code On Time web application generator

In the Solution Explorer, navigate to ~/App_Code/Rules/SharedBusinessRules.cs(vb). The code will need to enable virtualization if the controller name is “Products”. The virtualized Products controller will have a modified ReorderLevel field. The Items Style will be changed to “Drop Down List”, and it will have the following static items:

Value Text
0 Zero
5 Five
10 Ten
15 Fifteen
20 Twenty
25 Twenty-five
30 Thirty

Place the code into your SharedBusinessRules.cs(vb) file:

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
    {
        public override bool SupportsVirtualization(string controllerName)
        {
            if (controllerName == "Products")
                return true;
            return false;
        }

        protected override void VirtualizeController(string controllerName)
        {
            if (controllerName == "Products")
            {
                NodeSet().SelectField("ReorderLevel")
                    .SetItemsStyle("DropDownList")
                    .CreateItem(0, "Zero")
                    .CreateItem(5, "Five")
                    .CreateItem(10, "Ten")
                    .CreateItem(15, "Fifteen")
                    .CreateItem(20, "Twenty")
                    .CreateItem(25, "Twenty-five")
                    .CreateItem(30, "Thirty");
            }
        }
    }
}

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

        Public Overrides Function SupportsVirtualization(controllerName As String) As Boolean
            If (controllerName = "Products") Then
                Return True
            Else  
Return False End If End Function Protected Overrides Sub VirtualizeController(controllerName As String) If (controllerName = "Products") Then NodeSet().SelectField("ReorderLevel") _ .SetItemsStyle("DropDownList") _ .CreateItem(0, "Zero") _ .CreateItem(5, "Five") _ .CreateItem(10, "Ten") _ .CreateItem(15, "Fifteen") _ .CreateItem(20, "Twenty") _ .CreateItem(25, "Twenty-five") _ .CreateItem(30, "Thirty") End If End Sub End Class End Namespace

Save this file and run the web application. You will see that the Products controller now displays Reorder Level filter options as words, and the field is rendered as a drop down list.

Reorder Level field in Products now showing static items as words, and as a drop down list

Saturday, March 31, 2012PrintSubscribe
Creating Static Lookup Items

In the Products table of Northwind sample database, there is a Reorder Level field. It is rendered as a textbox where users can type in any number to trigger the product reorder. If you look at the available filtering options of the Reorder Level field, you can see that there is a limited number of values stored in the database (0, 5, 10, 15, 20, 25, and 30).

Reorder Level field in Products screen presented as a textbox

Let’s change this field into a static dropdown list, and have the values displayed as words instead of numbers. For example, “0” will be Zero, “5” will be Five, and so on.

Open the web application generator, select the project name, and select Design. Switch to the Controllers tab in the Project Explorer, and double-click on Products / Fields / Reorder Level node. Change Items Style of Reorder Level field to “Drop Down List”, and press OK to save the field.

Reorder Level field changed to Items Style of 'Drop Down List'

Scroll to the top of the Designer, and click on the Items tab. On the action bar, select New | New Item.

Each item represents an option available in the dropdown list. The Value is stored in the database, while the Text is displayed to the user.

Enter the following values:

Value Text
0 Zero

New Item of '0' for Reorder Level field

Press OK to save the item. Using the same method, create more items with the following values:

Value Text
5 Five
10 Ten
15 Fifteen
20 Twenty
25 Twenty-five
30 Thirty

Static list of lookup items for Reorder Level field

In the top left corner, press Generate to generate the web app. A Preview window will open. Navigate to Products page, and you will see that the Reorder Level is now displayed with words. Edit a record, and the Reorder Level is now a static dropdown lookup.

Reorder Level field presented as a drop down list with words

The adaptive filter in the Reorder Level column also reflects the static values.

Drop Down options for Reorder Level with static items

On the action bar, select Report | PDF Document. You will see that Reorder Level displays the Text, and not the Value of the field.

PDF Report of Products displaying text in Reorder Level field