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
Monday, June 11, 2012PrintSubscribe
Implicit Filters with Filter Expression

Property Context Fields can pass values from the current record to the lookup data view. The value is passed as a map in the format LookupFieldName=LocalFieldName.

If LookupFieldName is an actual field in the lookup data view, then an automatic “equals” filter is applied to the view. The value of LocalFieldName data field is copied from the current record to the filter expression.

If the lookup view does not have a data field that matches LookupFieldName, then automatic filtering will not occur. Developers can specify a view Filter Expression or create a business rule to use the value to implement filtering.

Let’s create a Filter Expression for a lookup view that takes advantage of values passed in the Context Fields property.

Navigate to the Orders page and select an order. Create a new Order Details record, and activate the ProductID lookup.

New Order Details modal form.

A complete list of products (77 in total) will be displayed by default.

77 items displayed in the ProductID lookup.

Let’s limit the set of products displayed to only those that are not already associated with the relevant order. If there is an OrderDetails record in the current order with a specific ProductID, then the product should not be displayed in the lookup.

Start the Project Designer. In the Project Explorer, switch to the Controllers tab and double-click on OrderDetails / Fields / ProductID field node.

ProductID field of Order Details controller.

Change the Context Field property:

Property New Value
Context Fields ExistingOrderID=OrderID

Press OK to save the field. Double-click on Products / Views / grid1 view node.

Notice that the ExistingOrderID field does not exist in the Products data controller. The application framework will not perform automatic filtering.

View 'grid1' of Products controller.

Change the Filter Expression:

Property New Value
Filter Expression
@ContextFields_ExistingOrderID is null or ProductID not in
(
    select "OrderDetails"."ProductID" 
    from "Order Details" OrderDetails
    where OrderDetails.OrderID = 
        @ContextFields_ExistingOrderID
)

The ExistingOrderID field that was mapped in in the Context Fields property of OrderDetails.ProductID is referenced as @ContextFields_ExistingOrderID in the filter expression above. The application framework will automatically bind the parameter value.

Press OK to save the view. On the toolbar, press Browse.

Navigate to the Orders page, and select an order. Create a new order detail, and activate the ProductID lookup. The set of products available for selection will be limited to those that don’t exist for the order. As more OrderDetails records are added, the total number of products available for selection will gradually decrease.

ProductID lookup displaying a limited subset of items.

Monday, June 11, 2012PrintSubscribe
Static Filter Values in Context Fields

Property Context Fields can list static values that can be used as lookup field filters.

For example, the CategoryID lookup field on the Products edit form displays eight categories available for selection.

CategoryID lookup window displays all categories by default.

Let’s specify static filter values for the CategoryID lookup data view.

Start the Project Designer. In the Project Explorer, switch to Controllers tab. Double-click on Products / Fields / CategoryID field node.

CategoryID field of Products controller.

Change the Context Fields property:

Property New Value
Context Fields CategoryID=1, CategoryID=5

Press OK to save the field.

CategoryID refers to the primary key of Categories controller. Any other data field in grid1 can be referenced as well.

CategoryID field of Categories controller.

On the toolbar, press Browse.

Navigate to the Products page, and edit a record. Activate the CategoryID lookup – only two items will be displayed.

CategoryID lookup window only displays two options.

If the lookup filter fields are text based, then the value must be surrounded by single quotes. For example, let’s use the field CategoryName as a context filter.

CategoryName field on grid1 view of Categories controller.

Change the Context Fields property of Products / Fields / CategoryID as shown next:

Property New Value
Context Fields CategoryName='Seafood', CategoryName='Dairy Products'

Press OK to save the field. On the toolbar, select Browse.

Navigate to Products page, and edit a record. Activate the CategoryID lookup – only two categories will be available for selection. Notice that the CategoryName field is hidden, since it is explicitly defined in the grid view.

CategoryID field displaying two options.

Sunday, June 10, 2012PrintSubscribe
Standard Numeric Format Strings

Standard numeric format strings can be used to format common numeric types in the client browser. A standard numeric format string takes the form Axx, where A is an alphabetic character called the format specifier, and xx is an optional integer called the precision specifier. The precision specifier ranges from 0 to 99 and affects the number of digits in the result. Any numeric format string that contains more than one alphabetic character, including white space, is interpreted as a custom numeric format string.

Let’s change the Data Format String of the Unit Price field on the Products controller.

Start the Project Designer. In the Project Explorer, switch to the Controllers tab and double-click on Products / Fields / UnitPrice field node.

UnitPrice of Products controller.

Change the Data Format String:

Property Value
Data Format String C4

Press OK t0 save the field. On the toolbar, click Browse.

Navigate to the Products page. The Unit Price field will be formatted as currency with a precision of 4.

Unit Price field formatted as currency with a precision of four.

Below is a list of supported standard format strings. The format string can be specified either directly or in curly brackets. The currency format string from the example can be written as “C4” or “{0:C4}”.

Note that the formatting output depends on the application user interface culture.

String Name Description Example

"D" or "d"

Decimal

Result: Integer digits with optional negative sign.

Supported by: Integral types only.

Precision specifier: Minimum number of digits.

1234 ("D") -> 1234

-1234 ("D6") -> -001234

"C" or "c"

Currency

Result: A currency value.

Supported by: All numeric types.

Precision specifier: Number of decimal digits.

123.456 ("C", en-US) -> $123.46

123.456 ("C", fr-FR) -> 123,46 €

123.456 ("C", ja-JP) -> ¥123

-123.456 ("C3", en-US) -> ($123.456)

-123.456 ("C3", fr-FR) -> -123,456 €

-123.456 ("C3", ja-JP) -> -¥123.456

"N" or "n"

Number

Result: Integral and decimal digits, group separators, and a decimal separator with optional negative sign.

Supported by: All numeric types.

Precision specifier: Desired number of decimal places.

1234.567 ("N", en-US) -> 1,234.57

1234.567 ("N", ru-RU) -> 1 234,57

1234 ("N", en-US) -> 1,234.0

1234 ("N", ru-RU) -> 1 234,0

-1234.56 ("N", en-US) -> -1,234.560

-1234.56 ("N", ru-RU) -> -1 234,560

"P" or "p"

Percent

Result: Number multiplied by 100 and displayed with a percent symbol.

Supported by: All numeric types.

Precision specifier: Desired number of decimal places.

1 ("P", en-US) -> 100.00 %

1 ("P", fr-FR) -> 100,00 %

-0.39678 ("P1", en-US) -> -39.7 %

-0.39678 ("P1", fr-FR) -> -39,7 %