Blog: Posts from September, 2012

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
Posts from September, 2012
Saturday, September 29, 2012PrintSubscribe
Passing Values to Custom Report Action

Many action require additional information that must be requested from the user. The Implementing a Custom Action tutorial in Getting Started series shows an example of such action.

The built-in Report action allows implementing custom report output created on the server. Developers can use external software or write code to produce the output.

Let’s consider requesting custom parameters and processing them when producing the output. The example assumes that there is an external URL that can accept ReportHeader. The action handler will redirect user to that URL.

The action handler will obtain several parameters from the following sources

  1. Confirmation data controller
  2. Selected row of the data view
  3. URL in the address bar of the browser

Confirmation Controller Configuration

Make sure that Reporting is enabled for your Northwind sample project.

Start the Project Designer. In the Project Explorer, switch to the Controllers tab and press New Controller icon on the toolbar.

New Controller context menu option in the Project Explorer.

Assign a name to the controller.

Property Value
Name ReportProperties

Press OK to save the controller. Right-click on ReportProperties / Fields node, and press New Field.

New Field context menu option for Fields node of ReportProperties confirmation controller.

Give this field the following settings.

Property Value
Name ReportHeader
Type String
Length 40
Allow null values True
Label Report Header

Press OK to save the field.

Adding Custom Report Action

Right-click on Orders / Actions / ag3 – New action group node, and press New Action.

New Action context menu option on an action group for Orders controller.

Give this action the following settings.

Property Value
Command Name Report
Command Argument _blank
Confirmation _controller=ReportProperties
_title=Configure properties for the report.
_width=500

Press OK to save the action.

Handling the Action

Create a controller business rule to handle the report action.

Right-click on Orders / Business Rules node.

New Business Rule context menu option in the Project Explorer.

Assign the following properties.

Property Value
Type C# / Visual Basic
Command Name Report
Command Argument _blank
Phase Execute

Press OK to save. On the toolbar, press Generate to create the business rule file.

When finished, right-click on Orders / Business Rules / Report, _blank (Code / Execute) - r100 controller node, and press Edit Rule in Visual Studio.

Edit Rule in Visual Studio context menu option for a code business rule.

Visual Studio will load the project and display the source code file of the business rule. Replace the code with the following:

C#:

using System;
using MyCompany.Data;

namespace MyCompany.Rules
{
    public partial class OrdersBusinessRules : MyCompany.Data.BusinessRules
    {
        
        /// <summary>
        /// This method will execute in any view for an action
        /// with a command name that matches "Report" and argument that matches "_blank".
        /// </summary>
        [Rule("r100")]
        public void r100Implementation(
                    int? orderID, 
                    string customerID, 
                    string customerCompanyName, 
                    int? employeeID, 
                    string employeeLastName, 
                    DateTime? orderDate, 
                    DateTime? requiredDate, 
                    DateTime? shippedDate, 
                    int? shipVia, 
                    string shipViaCompanyName, 
                    decimal? freight, 
                    string shipName, 
                    string shipAddress, 
                    string shipCity, 
                    string shipRegion, 
                    string shipPostalCode, 
                    string shipCountry,
                    // custom arguments
                    string parameters_ReportHeader, // comes from confirmation
                    string xyz                      // comes from URL
                    )
        {
            // This is the placeholder for method implementation.
            Result.NavigateUrl =
                String.Format("~/Pages/OrdersReport.aspx?ReportHeader={0}&OrderID={1}&xyz={2}",
                    parameters_ReportHeader, orderID, xyz);

        }
    }
}

Visual Basic:

Imports MyCompany.Data
Imports System

Namespace MyCompany.Rules

    Partial Public Class OrdersBusinessRules
        Inherits MyCompany.Data.BusinessRules

        ''' <summary>
        ''' This method will execute in any view for an action
        ''' with a command name that matches "Report" and argument that matches "_blank".
        ''' </summary>
        <Rule("r100")>
        Public Sub r100Implementation( _
                    ByVal orderID As Nullable(Of Integer),
                    ByVal customerID As String,
                    ByVal customerCompanyName As String,
                    ByVal employeeID As Nullable(Of Integer),
                    ByVal employeeLastName As String,
                    ByVal orderDate As Nullable(Of DateTime),
                    ByVal requiredDate As Nullable(Of DateTime),
                    ByVal shippedDate As Nullable(Of DateTime),
                    ByVal shipVia As Nullable(Of Integer),
                    ByVal shipViaCompanyName As String,
                    ByVal freight As Nullable(Of Decimal),
                    ByVal shipName As String,
                    ByVal shipAddress As String,
                    ByVal shipCity As String,
                    ByVal shipRegion As String,
                    ByVal shipPostalCode As String,
                    ByVal shipCountry As String,
                    ByVal parameters_ReportHeader As String,
                    ByVal xyz As String
                    )
            'This is the placeholder for method implementation.            
            Result.NavigateUrl =
            String.Format("~/Pages/OrdersReport.aspx?ReportHeader={0}&orderId={1}&xyz={2}",
                          parameters_ReportHeader, orderID, xyz)

        End Sub
    End Class
End Namespace

Save the file.

Testing the Report Action

Switch back to the Project Designer. On the toolbar, press Browse.

Navigate to the Orders page. Append the URL parameter “?xyz=Value” to the current page.

Entering an 'xyz' URL parameter into the URL bar of the browser.

Press Enter to navigate to the URL. On the list of orders, highlight an order and activate the Report action on the action bar.

A row selected in the list of Orders. The Report action on the action bar is highlighted.

The confirmation controller will open. Enter a Report Header and press OK.

Confirmation controller with Report Header populated with the value 'Header1'.

The next page will display a server error – no page was created to handle the request. However, if you look at the URL, you will see that the values of fields specified in the business rule have been passed.

Values from the confirmation controller, data view, and previous URL parameters have been passed.

The values available for passing include already present URL parameters (xyz), a field value from the selected row (orderId), and the value specified by the user in a confirmation controller (reportHeader).

If no row was selected, the value from the first row in the grid will be passed.

If you do have a real application behind the URL, then one can expect the correct output to be produced.

Saturday, September 29, 2012PrintSubscribe
Rows of List Box

The List Box allows lookup value selection from a scrolling box with a list of values. For example, the Employee Last Name field in Orders edit form has been configured as a List Box.

Employee Last Name lookup field configured as a List Box with 5 rows.

By default, there are 5 options displayed in the List Box at one time. This number can be changed using the Rows property.

Start the Project Designer. In the Project Explorer, switch to the Controllers tab and double-click on Orders / Views / editForm1 / c1 – Orders / EmployeeID node.

EmployeeID data field node in view 'editForm1' of Orders controller in the Project Explorer.

Change the Rows property:

Property New Value
Rows 8

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

Navigate to the Orders page, and edit a record. The Employee Last Name list box is now longer and displays more items at one time.

Employee Last Name lookup field configured as a List Box with 8 rows.

Saturday, September 29, 2012PrintSubscribe
Changing the Number of Columns of a Radio Button List

Lookup fields configured as a Radio Button List will have a single column by default. In the example below, the Employee Last Name lookup is a single-column radio button list.

Employee Last Name lookup field configured as a single column radio button list.

Let’s configure Employee Last Name with multiple columns.

Start the Project Designer. In the Project Explorer, switch to the Controllers tab and double-click on Orders / Views / editForm1 / c1 – Orders / EmployeeID data field node.

EmployeeID data field node of 'editForm1' view in Orders controller.

Change the Columns property:

Property New Value
Columns 3

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

Navigate to the Orders page, and edit a record. The radio button list for Employee Last Name field will be rendered in three columns.

Employee Last Name lookup field configured as a three column radio button list.