http://stackoverflow.com/questions/14221670/when-editing-a-grid-how-do-i-disable-specific-fields-by-row-kendo-ui?rq=1

function checkAndEdit(container, options) {
    if (options.model.col1 < options.model.col2) {
        $('<input data-bind="value:' + options.field + '" ' +
                'data-format="' + options.format + '" ' +
                'class="k-input k-textbox"/>')
                .appendTo(container);
    } else {
        grid.closeCell(container);
    }
}

var entries = [
    { id:1, col1: new Date(2012, 11, 31), col2: new Date(2013, 0, 1), col3: "Yes" },
    { id:2, col1: new Date(2013, 0, 1), col2: new Date(2013, 0, 1), col3: "No" },
    { id:3, col1: new Date(2013, 0, 2), col2: new Date(2013, 0, 1), col3: "No" }
];

var grid = $("#grid").kendoGrid({
    dataSource : {
        data    : entries,
        schema  : {
            model: {
                id    : "city",
                fields: {
                    col1: { type: "date"},
                    col2: { type: "date"},
                    col3: { editable: true }
                }
            }
        },
        pageSize: 3
    },
    columns    : [
        { field: "col1", title: "Col1", format: "{0:yyyy-MM-dd}" },
        { field: "col2", title: "Col2", format: "{0:yyyy-MM-dd}" },
        { field: "col3", title: "Edit?", editor: checkAndEdit }
    ],
    editable   : "incell",
    navigatable: true,
    pageable   : true
}).data("kendoGrid");

Validation Controls

Types of validators :
1. Required Field Validator
2. Range Validator
3. Compare Validator
4. Regular Expression Validator
5. Custom Validator

Validation Summary is used to display the error messages of all the validation controls in one place.

Validation Group is used to group the validation controls.

Some of the properties of validation controls :
1. ControlToValidate
2. Error Message
3. Text
4. SetFocusOnError
5. ValidationGroup



ASP.NET request processing - High level

IIS 5 :
When a request reaches IIS, it is passed to ASPNET_ISAPI, which in turn routes to worker process
(aspnet_wp.exe). The worker process loads CLR and Http runtime to process the request.

IIS 6 :
when a request reaches IIS, it hits HTTPSys, a kernel mode device driver. It finds out the application pool configured for this request in IIS metabase settings, and routes to that application pool. The worker process (w3wp.exe) in that application pool loads the ASPNET_ISAPI, which in turns loads CLR and starts HTTP runtime to process the request.

In IIS 5, the worker process is related to ASP.NET whereas in IIS 6, it is related to IIS.

Notes :
1. ASPNET_ISAPI is a dll which is an extension to IIS. It functions CLR host
2. CLR host is a piece of unmanaged code responsible for loading CLR into memory


HttpRuntime is a class. To begin processing the request, ProcessRequest method of HttpRuntime instance is called which creates an instance of HttpContext is created which is used to access other Request, Response and Session objects

After HttpRuntime loads HttpApplication object with the help of HttpApplicationFactory class.

Every request should pass through a set of HTTP modules which is configured by HttpApplication to reach the HTTP handler. Here comes HTTP pipeline which contains a set of HTTP modules and HTTP handler at the end.

HTTP modules are classes that have access to the incoming request.

Once the request reaches HTTP handler, IIS processing ends and page lifecycle starts.