Stanislav:
You were correct, the problem was that connector.js was included before the dhtmlxdataprocessor.js. I am not changing any of the other settings (“send data by post”, “send data all at once”, etc.).
I am now getting farther, but it is still failing. I am getting a null pointer exception because “status” is null (see detail below):
Actually, I’m seeing that in the post request (after I make an update to a column in the grid and hit enter), the only parameters being passed are: “editing=true” and “ids=1002”.
In stepping through the code, I noticed that in DataProcessor.process(), “status” is null. See the following code:
for (int i=0; i<id_keys.length; i++){
String id = id_keys[i];
HashMap<String,String> item_data = data.get(id);
String status = item_data.get("!nativeeditor_status");
[b]DataAction action = new DataAction(status,id,item_data);[/b]
result.add(action);
inner_process(action);
}
The HashMap item_data, only contains the following:
{id=1002}
So, the link “status = item_data.get(”!nativeeditor_status") returns null. This causes an exception further down stream in status_to_mode because “status” is null:
protected OperationType status_to_mode(String status) throws ConnectorOperationException{
if (status.equals(“updated”)) return OperationType.Update;
else if (status.equals(“inserted”)) return OperationType.Insert;
else if (status.equals(“deleted”)) return OperationType.Delete;
throw new ConnectorOperationException("Unknown action type: "+status);
}
On the client side, I have included the debug log. I simply double click on one of the rows and make a change. When I hit enter, it sends the update request to the server:
Log:
row 1002 marked [updated,valid]
Initiating data sending for 1002
Initiating data sending for all rows
Sending all data at once
Server url: rulesummaryupdate?editing=true parameters
00 = &
_dhx_trim = function () { return this.replace(/ /g, " ").replace(/(^[ \t]*)|([ \t]*$)/g, ""); }
10 = i
_dhx_trim = function () { return this.replace(/ /g, " ").replace(/(^[ \t]*)|([ \t]*$)/g, ""); }
20 = d
_dhx_trim = function () { return this.replace(/ /g, " ").replace(/(^[ \t]*)|([ \t]*$)/g, ""); }
30 = s
_dhx_trim = function () { return this.replace(/ /g, " ").replace(/(^[ \t]*)|([ \t]*$)/g, ""); }
40 = =
_dhx_trim = function () { return this.replace(/ /g, " ").replace(/(^[ \t]*)|([ \t]*$)/g, ""); }
50 = 1
_dhx_trim = function () { return this.replace(/ /g, " ").replace(/(^[ \t]*)|([ \t]*$)/g, ""); }
60 = 0
_dhx_trim = function () { return this.replace(/ /g, " ").replace(/(^[ \t]*)|([ \t]*$)/g, ""); }
70 = 0
_dhx_trim = function () { return this.replace(/ /g, " ").replace(/(^[ \t]*)|([ \t]*$)/g, ""); }
80 = 2
_dhx_trim = function () { return this.replace(/ /g, " ").replace(/(^[ \t]*)|([ \t]*$)/g, ""); }
_dhx_trim