Blog

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
Sunday, January 24, 2010PrintSubscribe
Floating Data Field Layout

The new floating layout of data fields allows automatic hypertext-like display of data fields in Web Site Factory applications. The floating layout can be applied to any data field category in a form view. You can see this in action at http://dev.codeontime.com/demo/websitefactory1/pages/employees.aspx if you select an employee record.

image

The layout is useful when you have a large number of fields in your database tables. The forms will automatically adjust themselves when you edit the record or resize the window. Here is the same form in edit mode. Notice that the field composition is not the same this time.

image

You can make this form even more compact if you request the field category to start the new column.

Here is the same record with the floating category of data fields that was configured to start the new column.

image

Here is the same record in edit mode.

image

You can instruct the code generator to start all form view categories in the new column and use the floating field layout on Features page of the project settings.

image

Thursday, January 14, 2010PrintSubscribe
Ad Hoc Reporting

Learn to create ad hoc reports in Web Site Factory projects.

We will show how to create an ad hoc report based on a business object layer class generated by Code OnTime Generator. Then we will replace the business object layer object with a ControllerDataSource component.

Watch this video on our YouTube channel at http://www.youtube.com/watch?v=wAeNRB-kdLY.

We will create a dataset with a table adapter based on a free-form SQL query or optional stored procedure. Then we will replace ControllerDataSource component in the AJAX web application created in the first part of the tutorial with an ObjectDataSource hooked to the data table adapter.

Watch this video on our YouTube channel at http://www.youtube.com/watch?v=T_FYskbhYCM.

Monday, January 11, 2010PrintSubscribe
Global Logging With Shared Business Rules

Many applications require a global log of changes made by users at runtime. Data Aquarium Framework provides an excellent mechanism to create a single point of logging of all operations.

If you create a code file with a class named YourNamespace.Rules.SharedBusinessRules inherited from BusinessRules base then the framework will use this class if there is no custom handler for the data controller.

Here is an example written in C#.

using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using System.Web;
using MyCompany.Data;

namespace MyCompany.Rules
{
    public class SharedBusinessRules : BusinessRules
    {
        public SharedBusinessRules()
        {
        }

        protected override void AfterSqlAction(ActionArgs args, ActionResult result)
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendLine();
            sb.AppendFormat(@"Controller: {0}, View: {1}, Command: {2}",
                args.Controller, args.View, args.CommandName);
            sb.AppendLine();
            switch (args.CommandName)
            {
                case "Update":
                    foreach (FieldValue v in args.Values)
                        if (v.Modified)
                        {
                            sb.AppendFormat(
                                "Field '{0}' has been changed from '{1}' to '{2}'",
                                v.Name, v.OldValue, v.NewValue);
                            sb.AppendLine();
                        }
                    break;
                case "Insert":
                    foreach (FieldValue v in args.Values)
                        if (v.Modified)
                        {
                            sb.AppendFormat(
                                "Field '{0}' is equal to '{1}'",
                                v.Name, v.Value);
                            sb.AppendLine();
                        }
                    break;
                case "Delete":
                    foreach (FieldValue v in args.Values)
                    {
                        sb.AppendFormat(
                            "Field '{0}' is equal to '{1}'",
                            v.Name, v.Value);
                        sb.AppendLine();
                    }
                    break;

            }
            System.Diagnostics.Debug.WriteLine(sb.ToString());
        }
    }
}

Here is a sample  debug output of the code produced by a Web Site Factory application when records in Northwind.Customers table are updated, inserted, and deleted.

image

The complete debug log in the picture is listed below.

Controller: Customers, View: grid1, Command: Update
Field 'CompanyName' has been changed from 'Alfreds Futterkiste' to 'Alfreds Futterkiste*'

Controller: Customers, View: grid1, Command: Insert
Field 'CustomerID' is equal to 'A'
Field 'CompanyName' is equal to 'New Company'
Field 'ContactTitle' is equal to 'President'

Controller: Customers, View: grid1, Command: Delete
Field 'CustomerID' is equal to 'A    '
Field 'CompanyName' is equal to 'New Company'
Field 'ContactName' is equal to ''
Field 'ContactTitle' is equal to 'President'
Field 'Address' is equal to ''
Field 'City' is equal to ''
Field 'Region' is equal to ''
Field 'PostalCode' is equal to ''
Field 'Country' is equal to ''
Field 'Phone' is equal to ''

You can implement  a database table to keep track of changes instead of sending the output to the Debug log that can be viewed in Visual Studio and Visual Web Developer Express. The code generator will create a user interface for the logging table and this will ensure that you can have an auditing and reporting capability embedded into your web application.

If you need to retain the global logging functionality in the custom data controller handler then simply use SharedBusinessRules class as a base class for your custom data-controller specific business rules.