JQGrid z usługami danych WCF (OData); loadBeforeSend nie jest wywoływany w trybie edycji; Nie można wykonać setRequestHeader

Mam trochę problemów z tą fantastyczną wtyczką jqgrid i moją próbą użycia jej z usługami danych WCF (nie bardzo, ale bardzo podobnymi usługami odata4j). Nawiasem mówiąc, jeśli ktoś myśli o używaniu jqgrid z usługami odata, proszę wysłać mi linię, znalazłem odpowiedzi na trudne pytania, jak na przykład, jak skonfigurować xmlreader grid do odczytu struktury xml odata pokonującej problem wyszukiwania przestrzeni nazw jquery (wskazówki:

zawieraćjquery.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>

W każdym razie problem polega na tym, że usługi odata potrzebują metody, która kieruje operację edycji (DELETE, PUT, MERGE), aby wysłać ją jako niestandardowy nagłówek żądania na zwykłym POST, a nie jako metodę http. Powodem tego wydaje się być fakt, że większość zapór nie zezwala na przekazywanie metod HTTP PUT i DELETE, ponieważ w ten sposób można na przykład umieszczać nowe pliki na serwerze, a także usuwać pliki, na wypadek, gdyby można było odgadnąć prawidłowa ścieżka. Krótko mówiąc ... zdarzenie loadBeforeSend nie jest wyzwalane dla edycji liniowej lub edycji formularza ... Widzę, że jest ono wyzwalane przy pełnym żądaniu danych siatki, ale otrzymuję tylkoserializeEditData zdarzenie wywołane, gdy przesyłam z formularza edycji. Martwię się, ponieważ poszedłem do plików źródłowych jqgrid (grid.formedit.js, grid.inlineedit.js) i nie mogłem uzyskać żadnych trafień za pomocą słów kluczowych beforesend, pokazywane są tylko serializeeditdata. Czy czegoś mi brakuje? Czy jest inny sposób ustawiania nagłówków, których potrzebuję na stroniexhr obiekt ajax, którego używa siatka? Czy toxhr obiekt odsłonięty przez siatkę?

Poniżej masz kod, który muszę obsługiwać podczas edycji zdarzeń ... ponownie, loadBeforeSend nie jest wyzwalany ...

Z góry dziękuję, 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>

questionAnswers(1)

yourAnswerToTheQuestion