Como jsonify "Adicionar" postagem / parâmetros para jqGrid

Este está me matando. Eu já li váriasOlegdos comentários dedocumentação, mas acho que estou ignorando algorealmente simples.

Eu tenho um jqGrid preenchido chamando um método da web que retorna JSON. Nós somos bons lá. Estou usando o Navegador para o meu botão "Adicionar" e usandoonSelectRow W/jqGrid.editRow() para minha edição.

Recebo a caixa de diálogo ao clicar no botão "Adicionar" e posso preencher tudo. No entanto, recebo umaerror Status: 'Internal Server Error'. Error code: 500 retorne a mensagem depois de clicar no botão Enviar. Usando o Firebug, oResponse é{"Message":"Invalid JSON primitive: FileType.","StackTrace":..... e aPost éFileType=3&ExportDate=12%2F29%2F2010&oper=add&id=_empty.

Obviamente, meu post não está sendo "jsonificado". Eu tentei usarserializeEditDataebeforeSubmit na tentativa de retornar manualmenteJSON.stringify(eparams);, mas nada funcionou. Por favor, veja meu código abaixo.

Webmethod

<WebMethod()> _
<ScriptMethod()> _
Public Sub ModifyFileLog(ByVal FileType As String, _
  ByVal ExportDate As Nullable(Of Date), _
  ByVal oper As String, ByVal id As String)
    Try
        ' blah
    Catch ex As Exception
        Throw New Exception(ex.Message)
    End Try
End Sub

JS - Globals

jQuery.extend(
    jQuery.jgrid.defaults, {
        type: "POST",
        mtype: "POST",
        datatype: "json",
        ajaxGridOptions: { contentType: "application/json" },
        ajaxRowOptions: { contentType: "application/json" },
        rowNum: 10,
        rowList: [10, 20, 30],
        serializeGridData: function(data) {
            return JSON.stringify(data);
        },
        gridview: true,
        viewrecords: true,
        sortorder: "asc"
    },
    jQuery.jgrid.edit, {
        ajaxEditOptions: { contentType: "application/json" },
        recreateForm: true,
        serializeEditData: function(postData) {
            return JSON.stringify(postData);
        }
    }
);

JS - jqGrid

var tblName = "tblFiles";
var pager1 = '#pagerFiles';
var grid = $("#" + tblName);
grid.jqGrid({
    url: 'WebService.asmx/GetFileLog',
    colNames: ['ID', 'File Type', 'Report Date', 'Export Date', 'EE Count'],
    ajaxGridOptions: {
        success: function(data, textStatus) {
            if (textStatus == "success") {
                ReceivedClientData(JSON.parse(getMain(data)).rows, grid);  // populates grid
                endGridRequest(tblName);    // hides the loading panel
            }
        },
        error: function(data, textStatus) {
            alert(textStatus);
            alert('An error has occured retrieving data!');
        }
    },
    editurl: "WebService.asmx/ModifyFileLog",
    serializeEditData: function(postData) {
        return JSON.stringify(postData);
    },
    recreateForm: true,
    pager: pager1,
    ...
}); // end .jqGrid()
grid.jqGrid('navGrid', pager1, { add: true, del: false, edit: true, view: false, refresh: true, search: false },
    {}, // use default settings for edit
    {
        //beforeSubmit: submitAddFileLog,
        closeAfterAdd: false,
        closeAfterEdit: true
    }, // use default settings for add
    {},  // delete instead that del:false we need this
    {multipleSearch: false }, // enable the advanced searching
    {closeOnEscape: true} /* allow the view dialog to be closed when user press ESC key*/
); // end grid/jqGrid('navGrid')

NOTA: Comecei a preencher usando$.ajax() por meio dedatatype: function(data), mas pensei em retornar ao exemplo mais simples para que isso funcionasse. Se você se interessa em pensar sobre as vantagens de usar$.ajax() simplesmente usandogrid.jqGrid({ url: blah });, Adoraria aprender mais. Caso contrário, informe-me se seria mais apropriado publicá-lo como uma pergunta separada.

Além disso, deixe-me saber se estou fazendo isso da maneira errada. Não estou preso a nenhuma maneira de fazer isso. Eu preferiria estar errado e aprender como fazer isso da maneira certa, do que estar "certo" em minha própria mente e continuar a abrir caminho.

Qualquer ajuda, juntamente com exemplos, seria imensamente apreciada.

questionAnswers(1)

yourAnswerToTheQuestion