Blog: Posts from December, 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 December, 2012
Saturday, December 15, 2012PrintSubscribe
Order Form Sample–Part 30

The automatically configured OrderDetails data controller has the following field set.

Default OrderDetails controller field set.

The report requires an extended field set in OrderDetails controller. The Denormalization Field Map will prompt the web application generator to create additional fields in data controllers.

Start Code On Time generator and click on the project name. Select Settings on the Project Action screen. Proceed to Business Logic Layer.

Activate Denormalization Map options and enter the following:

dbo.Order Details => dbo.Orders
OrderDate
RequiredDate
ShippedDate
ShipVia
Freight
ShipName
ShipAddress
ShipCity
ShipRegion
ShipPostalCode
ShipCountry

dbo.Orders => dbo.Employees
FirstName

Press the Finish button and refresh the OrderDetails controller.

Refreshing the 'OrderDetails' controller.

Click Design, and explore the fields of OrderDetails controller. The controller “borrows” additional fields from Employees and Orders controllers.

OrderDetails controller with new fields added by the denormalization field map.

Thursday, December 13, 2012PrintSubscribe
Order Form Sample–Part 29

Users can produce an order report by selecting an option from the Report menu on the action bar. The Print icon in the top left corner will activate the first option in the Report menu.

Using the 'PDF Document' action in the 'Report' menu of the action bar to create a report.

However, the default report only displays a top-down list of fields and values of the selected order. Order details are not present.

Default report displays a top-down list of fields and field values from the order record.

Let’s implement an action on the order form that will produce a report using a custom report template. This template will render the data in the same layout as the order form, and include all relevant order details.

Order report using a custom report template.

Such a report requires a denormalized data set joining rows from Orders, Order Details, Employees, and Shippers tables.

'Order Details', 'Orders', 'Customers', 'Employees', and 'Shippers' contain data needed for the report.

A denormalized data set can be created using one of the following methods:

  1. Using the Denormalization Field Map to extend the field set available in OrderDetails controller.
  2. Creating a data controller based on a database view that joins all required tables.

The data controller needs to be extended with a view that includes all data fields required for the report. A custom report template must be enabled for the view. The generated template can be customized directly in Visual Studio.

Finally, an action is needed to activate the report. Action parameters will map the current OrderID as a filter for the report data controller.

Tuesday, December 11, 2012PrintSubscribe
“Report” Action

Application framework uses Microsoft Report Viewer to create data reports in Tiff, Adobe PDF, Microsoft Word and Microsoft Excel formats.

Action “Report” is a shortcut for “ReportAsPdf” action.

Report action on Orders controller.

When no parameters are specified in the Command Argument or Data property of “Report” action, a PDF report will be generated from the current view.

The application framework applies a standard XSLT report template to the data controller XML file to create a report definition in RDLC format.  Then it uses the report definition to produce an output with a help of Report Viewer. The report is rendered on the web server using Local Processing mode of Report Viewer. The report document is streamed out to the client web browser.

Default report created from Orders view 'grid1'.

Parameters can be used to specify the controller, view, template, and various other factors that the application framework will take into account when creating a report. The parameters must be configured in the Data property of action.  The table below shows the available parameters.

Parameter Description
_controller Specifies the data controller to create a report from.
_view Specifies the view to create a report from.
_sortExpession Specifies an expression that will be used to sort data.
 
Example: OrderDate desc
_count Specifies a limit on the number of records in the report.
_template Specifies the name of a custom RDLC template file to use.
[Report Controller Field Filter] Multiple field filters can be specified in one of the following formats:  
1)  ReportControllerFieldName=ClientControllerFieldName

2) ReportControllerFieldName="Static Value"
3) ReportControllerFieldName=@Arguments_SelectedValues
 

If the “_controller” parameter is not specified, then the ReportControllerFieldName refers to the data controller presented to the user on the client. If the parameter is configured, then the filter references the specified data controller.

The ClientControllerFieldName is replaced with an actual value of the specified field in a data row selected on the client at runtime.

The static value must be enclosed in “single” or “double”quotes.

The @Arguments_SelectedValues parameter will pass a list of all selected primary keys.

Examples:
OrderCustomerID=CustomerID
CustomerID='ANTON'
CategoryID="7"

Note that when the Data property is used, user-specified filters will be overridden. Instead, use the Command Argument property. Specify the custom report template, controller, and view.

Example: Employees_grid1.rdlc,Employees,grid1

Passing a Field Value

Let’s create a Report action in the Orders controller to print a subset of order details. The action will be configured to use OrderDetails data controller with rows filters by an OrderID selected on the client at the time the action is triggered.

Start the Project Designer. In the Project Explorer, switch to the Controllers tab and right-click on Orders / Actions / ag4 (ActionBar) – Edit/Delete node. Press New Action.

Creating a new action in action group 'ag4' of Orders controller.

Assign the following properties:

Property Value
Command Name Report
Header Text Print Report of Order Details
Data

_controller=OrderDetails
_view=grid1
OrderID=OrderID

When Key Selected Yes

The highlighted value of OrderID parameter references the OrderID data field of Orders controller. The parameter itself is referencing the field in OrderDetails data controller.

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

Navigate to the Orders page, and select an order. On the action bar, press Print Report of Order Details.

Clicking on the action 'Print Report of Order Details'.

Open the PDF document that was downloaded to your hard drive. The report will contain order details filtered by the selected order.

Report of order detail records filtered according to the selected order.

Passing Multiple Field Values

If the data view allows multiple selection, every selected record should be passed to the report filter. The report action above will only pass the first one. Let’s customize the action in order to pass all selected primary keys.

In the Project Explorer, switch to the Pages tab. Double-click on Customers / Orders / container1 / view1 (Orders, grid1) node.

'View1' on Orders page.

Enable multi-selection for the view:

Property New Value
Selection Mode Multiple

Save the view. Switch to the Controllers tab, and double-click on Orders / Actions / ag4 (ActionBar) – Edit/Delete / a100 – Report | Print Report of Order Details node.

Action 'a100' of action group 'ag4' in Orders controller.

Make the following highlighted changes:

Property New Value
Data

_controller=OrderDetails
_view=grid1
OrderID=@Arguments_SelectedValues

Save the action. On the toolbar, press Browse. Navigate to the Orders page, and check boxes next to several orders. On the toolbar, press Print Report of Order Details.

Multiple orders selected.

Open the file. Notice that order details from all selected orders are printed in the report.

Order details from multiple orders are included in the report.