Web Application Generator

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
Web Application Generator
Sunday, April 8, 2012PrintSubscribe
Grid Template for New Mode

The same custom grid template will be applied to select, edit, and new modes of a grid view.

It may be beneficial to have a different template for new mode. For example, the generic grid view template works well in select and edit modes. The same template in the inline new mode looks confusing because the data fields do not have labels.

Generic grid view template render when creating a new data row inline in 'grid1' of Products

Let’s add a custom grid template to be used in the new mode while reusing the generic template in edit and select modes.

Start Code On Time web application generator, click on the project name, and press Develop. This will open the project in Visual Studio. Double-click on ~/Controls/Employees_GridTemplate.ascx. You will see the custom template that was made earlier. Under the div with id “Employees_grid1”, create another div with id “Employees_grid1_new”, as shown in the sample below:

<div style="display: none;">
    <div id="Employees_grid1">. . . . .</div>
    <div id="Employees_grid1_new"></div>
</div>

The wrapper div prevents the user from seeing the static template. Inside, the first div contains the generic custom grid view template. The second div will contain the new template for use with new mode. Within the second div element Employees_grid1_new, paste the following HTML body:

<table>
    <tr>
        <td valign="top" style="border:solid 1px #9d5a00;border-radius:5px;
            padding:3px;background-color:rgba(255,252,235,0.5)">
            <h3>Personal Info</h3>
            <div style="margin-bottom:4px">{FirstName}</div>
            <div style="margin-bottom:4px">{LastName}</div>
            <div style="margin-bottom:4px">{TitleOfCourtesy}</div>
            <div style="margin-bottom:4px">{BirthDate}</div>
        </td>
        <td valign="top" style="border:solid 1px #9d5a00;border-radius:5px;
            padding:3px;background-color:rgba(255,252,235,0.5)">
            <h3>Residence</h3>
            <div style="margin-bottom:4px">{Address}</div>
            <div style="margin-bottom:4px">{City}</div>
            <div style="margin-bottom:4px">{Region}</div>
            <div style="margin-bottom:4px">{PostalCode}</div>
        </td>
        <td valign="top" style="border:solid 1px #9d5a00;border-radius:5px;
            padding:3px;background-color:rgba(255,252,235,0.5)">
            <h3>Employee Info</h3>
            <div style="margin-bottom:4px">{Title}</div>
            <div style="margin-bottom:4px">{HireDate}</div>
        </td>
    </tr>
</table>
</div>

Save the user control file.

Let’s change the New Employees action on the action bar to send the user to the inline new mode, instead of createForm1.

'New Employees' action on the action bar in Code On Time web application

Switch back to the web application generator, click on the project name, and press Design. Double-click on Employees / container1 / view1 / Actions / ag3 (ActionBar) – New / a1 – New, createForm1.

This default action has a command argument of “createForm1”, which sends the user to the createForm1 form.

Default 'New' action on the action bar, with Command Argument of 'createForm1'

Delete “createForm1” from Command Argument property, and press OK to save the action.

On the tool bar, press Browse to regenerate the application and open it in your default web browser. Navigate to the Employees page, and click on the New Employees button on the action bar. Instead of taking you to createForm1, the action will open an inline new mode at the bottom of the grid.

'New Employees' action now opening inline new mode at bottom of 'grid1'

Saturday, April 7, 2012PrintSubscribe
Custom Grid Templates

When you select or edit a record in the grid view of Employees in a Northwind sample application, it will display the data fields in their respective columns.

Default 'grid1' view template for Employees in Code On Time web application

You can change the layout of form views using custom form templates. Custom templates can also be applied to the grid view, in order to rearrange the layout of the selected row.

Start Code On Time web application generator, click on the project name, and select Design. At the top of the page, switch to the User Controls tab. On the action bar, select New | New User Control. Give this user control the name of “Employees_GridTemplate”.

New User Control 'Employees_GridTemplate' in Code On Time Designer

Press OK to save the new user control.

Let’s apply this user control to the Employees page. In the Project Explorer, right-click on Employees / container1, and press New Control. In the User Control property, select “Employees_GridTemplate”.

New Control 'Employees_GridTemplate' for Employees page in Code On Time web application designer

Press OK to save the control.

Let’s add the Photo and Notes data fields to the grid for use with the custom template. Right-click on Employees / container1 / view1 / grid1, and press New Data Field. Use the following settings:

Property Value
Field Name Photo
Read Only Yes
The field is hidden True

Press OK to save the data field. Create another data field, with the following settings:

Property Value
Field Name Notes
The field is hidden True

Press OK to save.

Let’s change the column and row properties of the data fields to better fit the grid layout when in inline edit mode. Right-click on Employees / container1 / view1 / grid1, and select Show All Data Fields. Make the following changes:

Field Name Cols Rows
LastName 15  
FirstName 10  
Title 30  
TitleofCourtesy 4  
BirthDate 10  
HireDate 10  
Address 30  
City 15  
Region 4  
PostalCode 10  
Notes 40 5

Data Fields with optimized sizes in Code On Time Designer

On the toolbar, press Exit, and press Generate to create the user control and regenerate the web application.

When complete, switch back to the web app generator, click on the project name, and press Develop. This will open the project in Visual Studio. In the Solution Explorer, double-click on ~/Controls/Employees_GridTemplate.ascx.

Press Ctrl+K, Ctrl+D to format the document.

Make sure to preserve the @Control header that matches your programming language.

Replace the UpdatePanel element with the following markup:

<div style="display: none;">
    <div id="Employees_grid1">
        <table>
            <tr>
                <td style="vertical-align:top;margin-top:10px;">
                    <div class="FieldPlaceholder DataOnly" style="width: 90px; height: 70px; 
                        margin-right: 5px;">
                        {Photo}</div>
                </td>
                <td style="vertical-align: top;">
                    <div class="FieldPlaceholder DataOnly" style="margin-top: 4px;">
                        {TitleOfCourtesy}</div>
                    <div class="FieldPlaceholder DataOnly" style="margin: 4px;">
                        {FirstName}</div>
                    <div class="FieldPlaceholder DataOnly" style="float: none; margin: 4px;">
                        {LastName}</div>
                    <div class="FieldPlaceholder DataOnly" style="float: none; margin: 4px;">
                        {BirthDate}</div>
                    <div class="FieldPlaceholder DataOnly" style="float: none; margin: 4px;">
                        {Title}</div>
                    <div class="FieldPlaceholder DataOnly" style="float: none; margin: 4px;">
                        {HireDate}</div>
                </td>
                <td style="vertical-align: top; padding-left: 10px;">
                    <table>
                        <tr>
                            <td>
                                <div class="FieldPlaceholder DataOnly">
                                    {Address}</div>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <div class="FieldPlaceholder DataOnly">
                                    {City}</div>
                                <span style="float: left; margin-right: 4px;">,</span>
                                <div class="FieldPlaceholder DataOnly">
                                    {Region}</div>
                            </td>
                        </tr>
                        <tr>
                            <td style="vertical-align: top;">
                                <div class="FieldPlaceholder DataOnly">
                                    {PostalCode}</div>
                            </td>
                        </tr>
                    </table>
                </td>
                <td style="vertical-align: top; padding-left: 10px; width:300px;">
                    <div class="FieldPlaceholder DataOnly">
                        {Notes}</div>
                </td>
            </tr>
        </table>
    </div>
</div>

The outermost div in the custom template has CSS property display set to “none”, to prevent the static template from being displayed to the users. The next div has an id of “Employees_grid1”, which means that the template will be used for the grid1 view of Employees controller.

Inside, there is a table with three columns, each containing field placeholders wrapped in curly brackets. The CSS class FieldPlaceholder makes each data field float, while the class DataOnly hides the label of the data field.

Save the file, and refresh the web application page. Select any record, and you will see the new custom grid template at work.

Employees grid view using custom template in Code On Time web application

There is one small problem. When a row is selected, there is no way of editing the record inline. This requires addition of an Edit action in the row scope.

Switch back to the web application Designer. In the Project Explorer, right-click on Employees / container1 / view1 / Actions / ag8 (Row), and select New Action. Enter the following properties:

Property Value
Command Name Edit
When Client Script !this.get_isDataSheet()

New 'Edit' Action in 'ag8' Action Group

The When Client Script property is needed to hide the action in Data Sheet mode.

Please note that custom templates are not supported in Data Sheet mode.

Press OK to save, and press Browse on the tool bar to regenerate and open the web application in your default web browser. Go to the Employees page, and select any employee. You will see that there is now an Edit button underneath the selected row.

Employees grid view with custom template and Edit button

If you press this Edit button, the row will change to inline edit mode, using the custom grid template.

Employee record using custom template with inline editing mode

Press Cancel, mouse over the context menu of one of the rows, and press New. This will activate inline new mode, also using the custom template.

Employee record using custom template with inline new mode

Saturday, April 7, 2012PrintSubscribe
Category-Level Templates

The default editForm1 view of Orders is displayed below.

Default 'editForm1' of Orders in Code On Time web application

If you want to modify the layout of the entire form view, you can create a custom form template. However, this method has some disadvantages: multi-column data field categories, tabbed categories, and annotations will no longer be available in the customized form view.

You can preserve this functionality with the use of category-level templates, which customize individual data field categories, instead of replacing the entire form.

Start Code On Time web application generator, click on the project name, and press Design. Switch to the User Controls tab at the top of the page. On the action bar, select New | New User Control. Give this user control the name of “Orders_CategoryTemplate”.

New user control 'Orders_CategoryTemplate' in Code On Time Designer

Press OK to save the user control.

Let’s add the user control to the Orders page. Right-click on Customers / Orders / container1, and select New Control.

'New Control' option on container1 of Orders page in Code On Time Designer

In the User Control property, select Orders_CategoryTemplate.

New Control of User Control 'Orders_CategoryTemplate'

Press OK to save the control.

Next, we’ll need to create a new category and move some of the data fields. Right-click on Customers / Orders / container1 / view1 / editForm1, and select New Category. Give it the following settings:

Property Value
Header Text Shipping Information
Description This is the shipping information for this order.
New Column Yes

Properties for new 'Shipping Information' category in Code On Time web application Designer

Press OK to save the category, and you will see it appear in the Project Explorer. Right-click on the new category, and select New Data Field.

New Data Field context menu option in Code On Time Project Explorer

For the Field Name property, select “ShipName”. Press OK to save the data field. You will see the data field removed from category c1 and added to category c100. Using the same procedure, add the following data fields:

Field Name
ShipName
ShipAddress
ShipCity
ShipRegion
ShipPostalCode
ShipCountry

Exit the Designer, and press Generate to generate the application and create the user control.

Once complete, switch back to the web app generator, click on the project name, and press Develop. This will open the project in Visual Studio. Double-click on ~/Controls/Orders_CategoryTemplate.ascx to open the file. Press Ctrl+K, Ctrl+D to format the document. You will see a @Control header at the top, and an UpdatePanel underneath.

Default user control in Visual Studio

Delete the UpdatePanel, preserving the @Control header, and paste in the following markup:

<div style="display: none;">
    <div id="Orders_editForm1_c100">
        <div style="padding: 4px 4px 4px 0px">
            <div class="FieldPlaceholder DataOnly">
                {ShipName}</div>
            <div style="clear: both">
            </div>
        </div>
        <div style="padding: 0px 4px 4px 0px">
            <div class="FieldPlaceholder DataOnly">
                {ShipAddress}</div>
            <div style="clear: both">
            </div>
        </div>
        <div style="padding: 0px 4px 4px 0px">
            <div class="FieldPlaceholder DataOnly">
                {ShipCity}</div>
            <div style="float: left; margin-right: 8px;">
                ,</div>
            <div class="FieldPlaceholder DataOnly" style="margin-right: 8px">
                {ShipRegion}</div>
            <div class="FieldPlaceholder DataOnly">
                {ShipPostalCode}</div>
            <div style="clear: both">
            </div>
        </div>
        <div style="padding: 0px 4px 4px 0px">
            <div class="FieldPlaceholder DataOnly">
                {ShipCountry}</div>
            <div style="clear: both">
            </div>
        </div>
    </div>
</div>

The markup above has one div wrapping the entire block that sets a CSS style of “display:none”. This will prevent the text of the template from being displayed to the end user. There is another div with idOrders_editForm1_c100”, which specifies the controller name, view ID, and category ID that the template will be applied to. The rest of the HTML is used to format the field placeholders, which consist of the field names surrounded by curly brackets. The class FieldPlaceholder makes the data field float in the template body, and the class DataOnly hides the field label.

Switch back to the generator, click on the project name, and click Browse to start the application in your default browser. Navigate to Orders page, and select any order. You will see that there is a standard list of fields in a category on the left side of the page. On the right side, there is the category with a custom template.

Category using custom form template in Code On Time web application

You can define templates for all or some of the categories of the form view in the same user control. The order of the templates does not matter. Your own custom category-level template will look similar to the sample below.

<%@ Control . . . . .%>
<div style="display: none;">
    <div id="Orders_editForm1_c100">
        . . . . .
    </div>
    <div id="Orders_editForm1_c1">
        . . . . .
    </div>
</div>