Blog

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(8) OAuth Scopes(1) OAuth2(11) Offline(20) Offline Apps(4) Offline Sync(5) Oracle(10) PKCE(2) PostgreSQL(2) PWA(2) QR codes(2) Rapid Application Development(5) Reading Pane(2) Release Notes(179) Reports(48) REST(29) RESTful(29) RESTful Workshop(15) RFID tags(1) SaaS(7) Security(80) 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
Saturday, November 3, 2012PrintSubscribe
Order Form Sample–Part 27

Let’s customize the template that was generated.

In the Project Explorer, switch to the User Controls tab. Right-click on OrderFormTemplate node and press Edit in Visual Studio.

Edit in Visual Studio context menu option for a user control node in the Project Explorer.

The template will be opened in Visual Studio. On the toolbar, press Edit / Advanced / Format Document. You will see that there is an UpdatePanel element present. Delete the UpdatePanel element and replace it with the sample below.

<%@ Control AutoEventWireup="true" %>
<div>
    <div id="Orders_editForm1">
        <div class="FieldPlaceholder">
            {CustomerID}
        </div>
        <div class="FieldPlaceholder">
            {EmployeeID}
        </div>
        <div class="FieldPlaceholder">
            {ShipVia}
        </div>
        <div class="FieldPlaceholder">
            {OrderDate}
        </div>
        <div class="FieldPlaceholder">
            {Freight}
        </div>
        <div class="FieldPlaceholder">
            {Total}
        </div>
    </div>
</div>

The top level div element has another div element with id “Orders_editForm1”. This element instructs the client-side library of the application to present the contents of editForm1, rendered by Orders data controller, using the template. There are several more div elements within Order_editForm1, marked with the CSS class “FieldPlaceholder”. The field names, surrounded by curly brackets, have been placed inside as placeholders.

If you save the file, and refresh the webpage of the application, then you will see the fields in the layout specified in the template. You will also see the field names in brackets below the list of order details.

Order Form with custom template

To hide the field names in brackets, change the main div of the user control as follows:

<%@ Control AutoEventWireup="true" %>
<div style="display:none;"> <div id="Orders_editForm1"> <div class="FieldPlaceholder"> {CustomerID} </div> <div class="FieldPlaceholder"> {EmployeeID} </div> <div class="FieldPlaceholder"> {ShipVia} </div> <div class="FieldPlaceholder"> {OrderDate} </div> <div class="FieldPlaceholder"> {Freight} </div> <div class="FieldPlaceholder"> {Total} </div> </div> </div>
You can see that no field names in brackets will appear, and that only the fields specified in the template are presented in the detail view listed from left to right.

Order Form with hidden custom template

Let’s make a more sophisticated design for the template, which includes the rest of the fields. In order to build a completely custom template and retain the data functionality of the client side library, you need to get rid of the labels. Switch back to Visual Studio, and add the class “DataOnly” to each field, as shown in the example:

<%@ Control AutoEventWireup="true" %>
<
div style="display:none;"> <div id="Orders_editForm1"> <div class="FieldPlaceholder DataOnly"> {CustomerID} </div> <div class="FieldPlaceholder DataOnly"> {EmployeeID} </div> <div class="FieldPlaceholder DataOnly"> {ShipVia} </div> <div class="FieldPlaceholder DataOnly"> {OrderDate} </div> <div class="FieldPlaceholder DataOnly"> {Freight} </div> <div class="FieldPlaceholder DataOnly"> {Total} </div> </div> </div>

When you save and refresh the application, you can see that labels are no longer present, but the formatting is terribly off.

Orders edit form with custom template. CSS Class DataOnly has been applied.

Don’t worry. This gives you a perfect foundation to position the fields as you see fit.

Saturday, November 3, 2012PrintSubscribe
Creating an Edit Page

Data views are instances of data controllers placed on pages. The application generator automatically configures data views to start presentation with a list of records. Each data controller defines grid1 view to render a list of records.

Customers grid view.

If business requirements call for a single record to be visible to an end user, then the grid view becomes unnecessary.

A developer can specify that the form view editForm1 for the data view on the page. The form will be displayed initially. The data view will switch back to grid1 as soon as user initiates Insert, Update, Delete, or Cancel actions. The action state machine of data controllers does not define specific actions that must follow any of these commands. The client library will simply display the first view of the data controller.

The first view in Customers data controller is 'grid1'.

View ‘grid1’ happens to be first, and users will see a list of data records.

The developer has the option to add multiple actions that would select editForm1 after Insert, Update, Delete, or Cancel actions. The easiest solution is to move editForm1 to the first position.

To preserve the default functionality of the data controller on other pages, you may want to clone the controller, and have the clone configured to display data in the form view editForm1.

Start the Project Designer. In the Project Explorer, switch to the Controllers tab. Right-click on Customers controller node, and press Clone.

Clone context menu option for Customers controller.

A clone of Customers will be created and named “Customers1”. Drop Customers1 / Views / editForm1 node on the left side of grid1 node to place it first in the hierarchy.

Dropping editForm1 view node on the left side of grid1 view node.     View 'editForm1' is now first in the hierarchy.

Enter the following Filter Expression to display a specific record:

Property Value
Filter Expression CustomerID = 'BONAP'

Press OK to save. This expression will filter data to a specific CustomerID. The filter expression can also be configured to use a parameter returned by a business rule.

Right-click on Customers1 node and press Copy.

Copying Customers1 controller using the context menu option.

Switch to the Pages tab. On the toolbar, press the New Page icon.

New Page context menu option on Project Explorer toolbar.

Assign the page a name:

Property Value
Name My Account

Press OK to save. The page will be added to the bottom of the hierarchy of pages. Drop My Account page node on the right side of Home page node.

Dropping 'My Account' page node on the right side of Home page.     My Account page is now second in the hierarchy.

Right-click on My Account node, and press Paste.

Paste context menu option for My Account page node.

This will instantiate Customers1 controller in a new container on My Account page.

Customers1 controller instantiated as a data view on My Account page.

On the Project Designer toolbar, press Browse. When the My Account page loads, the data view will open in edit form.

My Account page opened in edit form.

Saving changes to the record, pressing Close, or creating a new record will keep the user in the edit form.

Saturday, November 3, 2012PrintSubscribe
Order Form Sample–Part 26

Let’s rearrange the Order Form page to make it easier for the end user to interact with the data. To do this, we will need to add a custom “Order Form Template” user control to the page.

In the Designer, right-click on OrderForm / c100 node, and press New Control.

'New Control' option in Code On Time Project Explorer

The new control requires you to select a user control. Click on the New User Control icon to the right of the field.

'New User Control' button on the 'New Control' page

Give this user control a name:

Property Value
Name OrderFormTemplate

Press OK to create the User Control. You will return to the New Control page. Leave the rest of the settings as default, and press OK to insert the control into the page container Order Form / c100.

Control added to the Order Form page.

Press Browse on the toolbar to regenerate the application.

The new user control will be generated if it doesn’t exist. If the generator detects that the file exists, then it will not be overwritten – any changes to the file will be preserved between code generation sessions.

Continue to Navigate Action