JQGrid con WCF Data Services (OData); loadBeforeSend no se llama en el modo de edición; No se puede hacer setRequestHeader

Estoy teniendo un pequeño problema con este fantástico complemento jqgrid y mi intento de usarlo con WCF Data Services (no realmente, pero los servicios odata4j muy similares). Por cierto, si alguien está pensando en usar jqgrid con servicios de odata, por favor envíeme una línea, encontré respuestas a preguntas difíciles como, por ejemplo, cómo configurar la cuadrícula xmlreader para leer una estructura de odata xml para vencer el problema de búsqueda de espacio de nombres jquery (consejos:

incluirjquery.xmlns.js

<code>.....
$.xmlns.m = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata";
$.xmlns.d = "http://schemas.microsoft.com/ado/2007/08/dataservices";
.....
var feedXmlReaderOptions = {
    root: "feed",
    row: "entry",
    repeatitems: false,
    id: "feed>entry>id"
};
....
    colModel: [
    {
        name: "clmNumKey", 
        index: "clmNumKey", 
        width: 150, 
        xmlmap: "d|clmNum",
        editable: true
    }
    ....
)
</code>

De todos modos, el problema es que los servicios de odata necesitan que el método que se ocupa de la operación de edición (BORRAR, PUTAR, COMBINAR) se envíe como un encabezado de solicitud personalizado en un POST normal, en lugar de ser un método http. El motivo es que la mayoría de los firewalls no permiten que se pasen los métodos PUT y DELETE http, porque así es como puede, por ejemplo, colocar nuevos archivos en el servidor, así como eliminar archivos, en caso de que pueda adivinar el ruta válida Larga historia corta ... el evento loadBeforeSend no se activa para la edición en línea o de formulario ... Puedo ver que se activa en una solicitud de datos completa de la cuadrícula, pero solo obtengo elserializeEditData evento activado cuando lo envío desde el formulario de edición. Estoy preocupado porque entré en los archivos fuente de jqgrid (grid.formedit.js, grid.inlineedit.js) y no pude obtener ninguna coincidencia con las palabras clave anteriores, solo se muestran los datos de datos serializados allí. ¿Me estoy perdiendo de algo? ¿Hay otra manera de establecer los encabezados que necesito en elxhr objeto ajax que usa la grilla? Es esoxhr ¿Objeto expuesto por la rejilla?

Debajo tienes el código que tengo para manejar los eventos de edición ... otra vez, el loadBeforeSend no se activa ...

Gracias de antemano, Serban

<code>$.extend($.jgrid.edit, {
    closeAfterEdit: true,
    closeAfterAdd: true,
    ajaxEditOptions: {
        contentType: "application/json"
    },
    mtype: 'POST',
    loadBeforeSend: function(xhr)
    {
        xhr.setRequestHeader("X-HTTP-Method", "MERGE");
        return xhr;
    },        
    serializeEditData: function (data) {
        delete data.oper;
        return JSON.stringify(data);
    }
});                                                  
</code>

Respuestas a la pregunta(1)

Su respuesta a la pregunta