A newer version of this page is available. Switch to the current version.

CustomJSPropertiesEventArgs.Properties Property

Gets a collection of temporary client properties.

Namespace: DevExpress.Web

Assembly: DevExpress.Web.v18.2.dll


public Dictionary<string, object> Properties { get; }
Public ReadOnly Property Properties As Dictionary(Of String, Object)

Property Value

Type Description
Dictionary<String, Object>

The collection of property names and values.


Use the event parameter's Properties property to add new properties that can be accessed on the client.


The only requirement is that property names must begin with the 'cp' prefix to avoid rewriting the object's base properties.


This example demonstrates how to cancel editing or disable the editor conditionally for the grid when batch editing is in use. It is possible to execute your logic either on the client or server side for a complex business model.

Then, handle the grid's client-side ASPxClientGridView.BatchEditStartEditing event to either cancel the edit operation using the e.cancel property:

if (condition) e.cancel = true;

or disable the editor by obtaining its client instance:

var editor = s.GetEditor(e.focusedColumn.fieldName);

The custom server-side logic can be executed in the CustomJSProperties event handler:

protected void ASPxGridView1_CustomJSProperties(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewClientJSPropertiesEventArgs e) {
    var clientData = new Dictionary<int, object>();
    var grid = sender as ASPxGridView;
    for (int i = 0; i < grid.VisibleRowCount; i++) {
        var rowValues = grid.GetRowValues(i, new string[] { "ID", "ServerSideExample" }) as object[];

        var key = Convert.ToInt32(rowValues[0]);
        if (key % 2 != 0)
            clientData.Add(key, "ServerSideExample");
    e.Properties["cp_cellsToDisable"] = clientData;
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<%@ Register Assembly="DevExpress.Web.v14.1, Version=, Culture=neutral, PublicKeyToken=b88d1754d700e49a" Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %>

<%@ Register assembly="DevExpress.Web.v14.1, Version=, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.Web.ASPxEditors" tagprefix="dx" %>

<!DOCTYPE html>

<html xmlns="">
<head runat="server">
    <script type="text/javascript">
        function OnBatchStartEdit(s, e) {
            //client processing
            var keyIndex = s.GetColumnByField("ID").index;
            var key = e.rowValues[keyIndex].value;

            var condition = key % 2 == 0;

            if (e.focusedColumn.fieldName == "ClientSideCancel") //cancel example
                if (!condition) e.cancel = true;

            //server preprocessing
            if (typeof s.cp_cellsToDisable[key] != "undefined" && s.cp_cellsToDisable[key] == e.focusedColumn.fieldName)
                e.cancel = true;
    <form id="form1" runat="server">
        <dx:ASPxGridView ID="ASPxGridView1" runat="server" KeyFieldName="ID" OnCustomJSProperties="ASPxGridView1_CustomJSProperties">
            <SettingsEditing Mode="Batch"></SettingsEditing>
            <ClientSideEvents BatchEditStartEditing="OnBatchStartEdit" />
See Also