Edit this page

OnUserAction

Sys.CancelEventArgs OnUserAction Property

Generally, RadGrid provides OnCommand event handler, which can be used to cancel every grid command on client-side. Although this would prevent the initiated command to post back to the server, some commands like PageSize, Sorting, etc. also contain client-side logic, e.g. hiding the pager item or changing the status of the sort icon in the header cell of a column. Therefore, we introduced OnUserAction event with the primary goal of providing a convenient way to cancel these actions, which have client-side logic applied in addition to the server-side event raising.

The event will be raised for these actions: Page, Sort, PageSize, Filter. It is commonly used in editing scenarios, to remind the users that they will lose any changes if they continue without saving. You can examine the following live sample for a practical implementation:
Grid - Binding to Telerik ClientDataSource

The event provides arguments to extract details about the user action. Some of the method names depend on the current action due to the specificity of the related argument.

Fired by RadGrid
Arguments Common
get_actionName() - returns the name of the initiated action
get_tableView() - returns the owner Telerik.Web.UI.GridTableView object
set or get_cancel() - gets or sets the cancelled status of the event

Page
set or get_newPageIndex()

PageSize
set or get_newPageSize()

Sort
set or get_sortExpression()

Filter
set or get_columnUniqueName() - the name of the column, which the grid will be filtered by
set or get_filterFunction() - the name of the active function: EqualTo, StartsWith, LessThan, etc.
set or get_filterValue() - the value to be filtered on
Can be canceled Yes

Example:

<ClientSettings>
    <ClientEvents OnUserAction="userAction" />
</ClientSettings>
function userAction(sender, args) {
    var isDirtyFlag = true; // some condition
    var message = "Changes will be lost. Continue anyway?";

    if (isDirtyFlag && !confirm(message)) {
        args.set_cancel(true);
    }
}

How to prevent loss of user input in batch editing mode

function OnUserAction(sender, args) {
    var tableView = args.get_tableView();
    var batchEditingManager = sender.get_batchEditingManager();
    var isDirty = batchEditingManager.hasChanges(tableView);
    if (isDirty) {
        var shouldAllowOperation = confirm("changes will be lost, do you wish to continue");
        args.set_cancel(!shouldAllowOperation);
    }
}