Reports

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
Reports
Thursday, December 6, 2012PrintSubscribe
“Page Orientation” Property

When a report is created from a view that has more than seven fields, the report is rendered with landscape orientation, such as the example shown below. When a report has less than seven fields, the report is rendered in portrait orientation.

Report created from 'Customers' grid view oriented as landscape.

The report orientation can also be forced to render portrait or landscape by using the “Page Orientation” property.

Let’s change the Customers report displayed above to be presented in portrait orientation.

Start the Project Designer. In the Project Explorer, switch to the Controllers tab. Double-click on Customers / Views / grid1 node.

View 'grid1' of Customers controller.

Change the following:

Property New Value
Page Orientation Portrait

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

Navigate to the Customers page. On the action bar, press Report | PDF Document.

Printing a PDF Report from Customers grid view.

Open the PDF file that was saved to your hard drive. The report will be in portrait orientation.

Report created from 'Customers' grid view oriented as portrait.

Thursday, December 6, 2012PrintSubscribe
“Report Label” Property

The “Report Label” property allows specifying the header text displayed at the top of a report.

By default, the name of the controller will be displayed. The picture below shows the default header text of a report created from Customers “grid1” view.

Customers report with default header text of 'Customers' at the top of the page.

Let’s change the label of the report.

Start the Project Designer. In the Project Explorer, switch to the Controllers tab. Double-click on Customers / Views / grid1 node.

View 'grid1' of Customers controller.

Change the following:

Property New Value
Report Label List of Customers

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

Navigate to the Customers page. On the action bar, press Report | PDF Document.

Printing a PDF Report from Customers grid view.

Open the PDF file that was downloaded to your hard drive. The report will have the specified text displayed at the top of the page.

Customers report with customized header text of 'Report of All Customers' at the top of the page.

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.

Continue to FileName Action