User Interface

Labels
AJAX(112) App Studio(8) 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(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(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
User Interface
Wednesday, January 2, 2013PrintSubscribe
Duplicating a Record with SQL Business Rule

The default Duplicate action available in Code On Time web apps performs a client-side duplication. When the action is activated, the create form will be opened and the fields will be populated using values from the duplicated record. The new record will only be saved to the database when the user presses OK.

Sometimes it is necessary for more complex operations to be performed when a record is duplicated. For example, when a master record is duplicated, the child records should be duplicated as well. This will require a server-side duplication. A custom action will be implemented – when the user activates this action, the master and detail records will be copied and saved to the server. The order will then be displayed in the edit form.

Let’s implement a master-detail duplication with Orders and Order Details controllers in the Northwind database.

Start the Project Designer. In the Project Explorer, switch to the Controllers tab. Right-click on Orders / Actions / ag1 (Grid) node, and press New Action.

Creating a new action in Orders controller.

Assign the following values:

Property Value
Command Name Custom
Command Argument DuplicateOrder
Header Text Duplicate Order
Confirmation Are you sure you want to duplicate this order?

Press OK to save the action. Right-click on Orders / Business Rules node, and press New Business Rule.

image

Use the following:

Property Value
Type SQL
Command Name Custom
Command Argument DuplicateOrder
Phase Execute

In the Script property, enter the following:

-- duplicate the order
insert into Orders (CustomerID, EmployeeID, OrderDate, RequiredDate, 
                    ShippedDate, ShipVia, Freight, ShipName, ShipAddress, 
                    ShipCity, ShipRegion, ShipPostalCode, ShipCountry)
select CustomerID, EmployeeID, getdate(), RequiredDate, null, ShipVia, 
        Freight, ShipName, ShipAddress, ShipCity, ShipRegion, 
        ShipPostalCode, ShipCountry
from Orders
where OrderID = @OrderID

-- find ID of duplicated order
declare @NewOrderID int;
select @NewOrderID = @@IDENTITY;

-- duplicate order details
insert into "Order Details" (OrderID, ProductID, UnitPrice, 
                            Quantity, Discount)
select @NewOrderID, ProductID, UnitPrice, Quantity, Discount
from "Order Details"
where OrderID = @OrderID

-- open edit form for duplicate order
set @Result_NavigateUrl = 'Orders.aspx?OrderID=' + cast(@NewOrderID as nvarchar)
                          + '&_controller=Orders&_commandName=Edit'
                          + '&_commandArgument=editForm1'

The business rule will first duplicate the order. The OrderDate will be assigned the current date, and RequiredDate will be set to null. Then, the ID of the new order will be acquired using the @@IDENTITY function. The order details will be duplicated using the new ID. Finally, the client library will be prompted to navigate to open the new order using URL parameters. Press OK to save the business rule. On the toolbar, press Browse.

Navigate to the Orders page. Using the context menu on a row, activate the Duplicate Order option.

Activating the context menu option 'Duplicate Order'.

The order and associated order details will be duplicated, and it will be displayed in the edit form.

Order duplicated and opened in the edit form.

Wednesday, January 2, 2013PrintSubscribe
Handling Row Selection in a Data View

The key of the selected row of a data view can be accessed using JavaScript.

Start the Project Designer. On the Project Explorer toolbar, click on the New Page icon.

Creating a new page in the Project Explorer.

Use these values for the new page:

Property Value
Name ProductsTest
Roles n/a

Press OK to save. In the Project Explorer, drop Products Test page node on the right side of Home page node to place it second in the hierarchy.

Dropping page 'Products Test' on the right side of 'Home'.     Page 'Products Test' has been placed second in the list of pages.

Right-click on Products Test node, and press New Container.

Creating a new container in the page.

Use the default values and press OK to save.

Right-click on Products Test / c101 container node, and press New Control.

Creating a new control in the container.

Next to the User Control property, click on the New User Control icon.

Activating the 'New User Control' icon.

Assign a name to the user control:

Property Value
Name SelectedKeyBox

Press OK to save and insert it into the User Control property. Press OK again to add the control to the page.

Next, switch to the Controllers tab. Right-click on Products controller and press Copy.

Using the 'Copy' context menu option for Products controller.

Switch back to the Pages tab. Right-click on Products Test / c101 container node, and press Paste. A Products data view will be instantiated.

Pasting onto the container in Products Test page.     Products data controller instantiated as a data view.

On the toolbar, press Browse to generate the user control file. When done, right-click on Products Test / c101 / control1 – SelectedKeyBox node and press Edit in Visual Studio.

Editing the user control in Visual Studio.

The file will be opened in Visual Studio. Replace the code after the <%@ Control %> element with the following:

<script type="text/javascript">
    $(window).ready(
    setTimeout(function () {
        var dataView = Web.DataView.find('Products', 'Controller');
        if (dataView)
            dataView.add_selected(function () {
                $('.MyTextBox').val(dataView.get_selectedKey())
            });
    }, 50)
    );
</script>
<asp:TextBox type="text" ID="TextBox1" runat="server" class="MyTextBox"></asp:TextBox>

The user control will consist of an empty textbox. When the user selects a row, the selected key will be assigned as the value of the textbox.

Save the file. Switch to the open browser tab with the web app. Refresh the page, and navigate to Products Test page.

A textbox will be present above the list of products. Click on a row, and the ProductID will be displayed in the textbox.

The ProductID of the selected row is displayed in the textbox.

Clicking on another row will update the value in the textbox.

Clicking on another row will update the textbox.

Sunday, December 30, 2012PrintSubscribe
Exclude from Menu & Include In Menu

It is not necessary for all application pages to be visible in the navigation menu. These “system” pages may be accessed by a link from another page or a redirection via the Navigate action.

Exclude From Menu

Let’s exclude the Customer Demographics page from the navigation menu.

'Customer Demographics' navigation menu item.

Start the Project Designer. In the Project Explorer, right-click on Customer Demographics page node, and press Exclude From Menu.

Using the 'Exclude from Menu' context menu option for 'Customer Demographics' page.     'Customer Demographics' page is now excluded from the menu.

On the toolbar, press Browse. Notice that the Customer Demographics page is no longer present in the navigation menu.

'Customer Demographics' page not present in the navigation menu.

The page may still be accessed by the URL ~/Pages/CustomerDemographics.aspx.

Page 'Customer Demographics' is still accessible via the URL.

Include in Menu

Let’s restore the page to the navigation menu. Switch back to the Project Designer. Right-click on Customer Demographics node, and press Include in Menu.

Using the 'Include in Menu' context menu option for 'Customer Demographics' page.     'Customer Demographics' page is now included the menu.

The page will be included at the end of the menu. Let’s move it back to the original position. Drop Customer Demographics node on the right side of Categories node.

Dropping 'Customer Demographics' page on the right side of 'Categories' page.     'Customer Demographics' page placed after 'Categories'.

On the toolbar, press Browse. The Customer Demographics navigation menu item will have been restored.

'Customer Demographics' page now present in the navigation menu.