ASPxClientGridViewBatchEditStartEditingEventArgs.rowValues Property
Gets a hashtable that maintains information about editable cells.
Declaration
rowValues: any
Property Value
Type | Description |
---|---|
any | A hashtable that stores information about editable cells. |
Remarks
The rowValues structure is a hashtable that maintains information about editable cells in the following manner:
rowValues = {
"0": {
value: "someValue",
text: "someDisplayText"
}
}
//Here, "0" is an example of the column index specifying the corresponding row cell
You can manipulate entries of this hashtable to initialize/modify editor values or prevent displaying editors for particular cells by removing the corresponding entries from the rowValues structure.
Example
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);
editor.SetEnabled(condition);
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;
}
Note
A complete sample project is available at https://github.com/DevExpress-Examples/aspxgridview-batch-editing-how-to-cancel-editing-or-disable-the-editor-conditionally-t115144
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Assembly="DevExpress.Web.v14.1, Version=14.1.13.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %>
<%@ Register assembly="DevExpress.Web.v14.1, Version=14.1.13.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.Web.ASPxEditors" tagprefix="dx" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<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;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<dx:ASPxGridView ID="ASPxGridView1" runat="server" KeyFieldName="ID" OnCustomJSProperties="ASPxGridView1_CustomJSProperties">
<SettingsEditing Mode="Batch"></SettingsEditing>
<ClientSideEvents BatchEditStartEditing="OnBatchStartEdit" />
</dx:ASPxGridView>
</div>
</form>
</body>
</html>