Первое требование может быть выполнено, если вы l oop в обратном порядке, так как идентификаторы получаются от первой строки до последней - т.е. функция startEdit может выглядеть так:
function startEdit() {
var grid = $("#jqGrid");
var ids = grid.jqGrid('getDataIDs');
for (var i = ids.length - 1; i >= 0; i--) {
grid.jqGrid('editRow',ids[i]);
}
}
As для других требований это зависит от того, что следует делать при запросе новой страницы - сохранить существующие изменения или отменить их.
Для этой цели необходимо использовать события onPaging и, возможно, onSortCol (в случае сортировки), но все они зависят от конкретных требований c выше