I had the same problem. I wanted to prevent certain rows from being edited, based on their state when they were retrieved from the database. I added a boolean field "IsReadOnly" to the object and set it before sending it back from the server.
In the client-side code, I ended up implementing the "edit" event of the grid like this:
edit: function (e) { if (e.model.IsReadOnly) { $('#myGrid').data("kendoGrid").closeCell(); }
}
It immediately closes the cell out of edit mode as soon as its clicked into. Not as elegant as preventing it from changing to the editable cell to begin with, but it happens fast enough it isn't visually noticable that it ever was anything but just the text.