Business Rules/Logic

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
Business Rules/Logic
Saturday, January 5, 2013PrintSubscribe
Interacting with the Client Library

Server-side code can take advantage of the application client library by registering snippets of JavaScript rendered on the server.

Let’s set up a user control with a button. When the button is pressed, an alert will be shown and a message displayed in the message bar at the top of the page.

Creating User Control

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

Creating a new page using the icon on the Project Explorer toolbar.

Assign a name:

Property Value
Name Test

Press OK to save. Drop Test page node on the right side of Home page node to place it second in the hierarchy.

Dropping 'Test' page node on the right side of 'Home' page node.     Page 'Test' has been placed second in the hierarchy.

Right-click on the page, and press New Container.

Creating a new container for page 'Test'.

Preserve the default values and press OK to save.

Right-click on the new container, and press New Control.

Creating a new control.

Next to the User Control lookup in the Project Browser, click on the New User Control icon.

Creating a new user control using the 'New User Control' icon.

Assign the user control a name:

Property Value
Name DisplayAlert

Press OK to save the user control and insert it. Press OK again to save the control.

Modifying the User Control

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

Editing the user control in Visual Studio.

The user control will open in Visual Studio. Press Ctrl+K, Ctrl+D keyboard shortcut to format. Replace the code after the <%@ Control %> element with the following:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <div style="margin: 2px; border: solid 1px silver; padding: 8px;">
            <asp:Button ID="Button1" runat="server" 
                OnClick="Button1_Click" Text="Button" />
        </div>
    </ContentTemplate>
</asp:UpdatePanel>

The user control will display a button that will perform the “Button1_Click” method handler when pressed. In the Solution Explorer, double-click on ~\Controls\DisplayAlert.ascx\DisplayAlert.ascx.cs file. Add the following method to the file:

C#:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Controls_DisplayAlert : System.Web.UI.UserControl
{
    
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        ScriptManager.RegisterStartupScript(this.Page,
            this.Page.GetType(), "test1",
            "alert('hello')", true);
        ScriptManager.RegisterStartupScript(this.Page,
            this.Page.GetType(), "test2",
            "Web.DataView.showMessage('hello')", true);
    }
}

Visual Basic:

Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text.RegularExpressions
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls


Partial Public Class Controls_DisplayAlert
    Inherits Global.System.Web.UI.UserControl
    
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    End Sub
    Protected Sub Button1_Click(ByVal sender As Object,
                                ByVal e As EventArgs)
        ScriptManager.RegisterStartupScript(Me.Page, Me.Page.GetType(),
                                            "test1", "alert('hello')", True)
        ScriptManager.RegisterStartupScript(Me.Page, Me.Page.GetType(),
                                            "test2", "Web.DataView.showMessage('hello')", True)
    End Sub
End Class

The method will show an alert using the standard alert method. A message is shown at the top of the page with the help of the client library method Web.DataView.showMessage. Save the file, and switch to the web application.

Viewing the Results

Navigate to the Test page. Click on the button in the center of the page. An alert will open with the text “hello”.

image

Press OK to dismiss the alert. A message will be displayed at the top of the page with the text “hello”.

image

Wednesday, January 2, 2013PrintSubscribe
Custom Business Rule for Duplicate Action

The default behavior of Duplicate action is to execute the New action and automatically copy values from the current row into the fields of the record. If it is necessary to change the default behavior, a custom business rule must be used.

A user can duplicate a customer using the Duplicate context menu option in Customers grid.

Duplicate context menu action for a row in Customers grid.

The create form will be opened. Fields will be populated using the values of the original record.

Duplicate causes the New Customers form to open with the same values as the original record.

Let’s add a business rule that will add an asterisk (*) to the Customer# field.

Start the Project Designer. In the Project Explorer, switch to the Controllers tab. Right-click on Customers / Business Rules node, and press New Business Rule.

Creating a new business rule for Customers controller.

Assign these values:

Property Value
Type JavaScript
Command Name New
Phase After
Script
[CustomerID] = [CustomerID] + '*';

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

Navigate to the Customers page. Activate the context menu for a row and press Duplicate.

Activating 'Duplicate' context menu option for a Customers record.

The Customer# value will be appended with an asterisk.

The 'CustomerID' field is appended with an asterisk.

This Duplicate action is only client-side. The data is only saved to the server when the user presses OK.

More complex duplication calculations that require database interaction can be implemented with the use of REST (Representational State Transfer) or with the use of SQL Business Rules.

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.