Database Lookups

Labels
AJAX(112) App Studio(7) 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(177) 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(183) 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(2) 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
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

Friday, March 23, 2012PrintSubscribe
In-Place Creation of Lookup Items

Lookup fields with the style “Lookup” render a button that allows creating new lookup items in-place.

The screen shot shows a “New Supplier” button next to the “Supplier Company Name” field on a form view.

Button 'New Lookup Item' rendered next to a lookup field allows in-place creation of lookup items

If user clicks on the button then “New Supplier” modal form is rendered.

'New ...' modal form displayed in response to in-place lookup creation button click

If the user enters the values and clicks OK then the new data record is created. The newly created record will be displayed as the lookup value.

Lookup item is automatically selected after in-place creation

The “New Lookup Item” button is displayed only if the current user is allowed to create new objects of this lookup type. If there is at least one action with command name New that is available to the users as defined by the “Suppliers” data controller, then the button is rendered.

Action 'New' displayed in Project Explorer

You can assign a value to the Roles property of all “New” actions  defined by the data controller, or implement data controller virtualization to prevent certain types of users from being able to create new lookup items in-place.

You can also specify a custom form that will be used to create new lookup items or disable this feature permanently if you change or clear the New Data View property under the Lookup section of the field.

Property 'New Data View' displayed in the 'Lookup' section of the field properties

The following screen shot shows the lookup field rendered without the “New Lookup Item” button if you clear the New Data View property of Products / Fields / SupplierID field.

Lookup field without 'New Lookup Item' button