JQGrid - Não é possível chamar o ASP.NET WebMethod, mas pode com o Ajax

Eu sou novo no jqGrid e achei difícil seguir a documentaçãoDocumentação do jqGrid

Não consigo descobrir como chamar um WebMethod ao configurar o JQGrid. Consegui fazer uma chamada Ajax para obter os dados e depois configurar o JQGrid com dados locais. Eu acho que é uma etapa extra no processo de instalação e que eu deveria poder fornecer o caminho para o método da web usando a propriedade url.

A propriedade editurl é da mesma maneira. Na verdade, nunca estou recebendo a postagem no servidor.

Código original

Tentativa de instalação do JQGrid


function GetData()
{
    $('#list').jqGrid({
        type: "POST",
        url: "Default.aspx/GetUsersJSON",
        datatype: "json",
        height: 250,
        colName: ['Username', 'Email'],
        colModel: [
                ...
    }).jqGrid(
                'navGrid',
                '#pager',
                {
                    edit: true,
                    add: true,
                    del: true
                });
}

WebMethod



        [WebMethod]
        public static string GetUsersJSON()
        {
            var users = new List();
            using(UserAdministrationSandboxDataContext uasd = new UserAdministrationSandboxDataContext())
            {
                users = uasd.GetUserList();                
            }
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            return serializer.Serialize(users); 

        }

Código atual

Eu consegui funcionar corretamente agora, mas ainda tenho uma pergunta final. Por que eu tive que definir o 'repeatitems: false' para exibir o conteúdo?

Algumas das advertências para que isso funcione incluem as diferentes maneiras de configurar a solicitação do ajax.

(Ajax: type) é (jqgrid: mtype) (Ajax: contentType) é (jqgrid: ajaxGridOptions: {contentType:})

E, finalmente, entendendo a documentação da documentação sobre como configurar o JSONReader.

Espero que isso ajude os outros e obrigado Oleg por toda a sua ajuda.

JS



function GetUserDataFromServer()
{
    $('#list').jqGrid({
        url: "Default.aspx/GetUsersJSON",
        mtype: 'POST',        
        ajaxGridOptions: { contentType: "application/json" },
        datatype: "json",
        serializeGridData: function (postData)
        {
            return JSON.stringify(postData);
        },
        jsonReader: {
            root: function (obj) { return obj.d; },
            page: function (obj) { return 1; },
            total: function (obj) { return 1; },
            records: function (obj) { return obj.d.length; },
            id:'0',
            cell:'',
            repeatitems: false            
        },
        datatype: "json",
        height: 250,
        colName: ['Username', 'Email'],
        colModel: [
                {
                    name: 'Username',
                    index: 'Username',
                    width: 100,
                    editable: true
                },
                {
                    name: 'Email',
                    index: 'Email',
                    width: 220,
                    editable: true
                },
                {
                    name: 'IsLockedOut',
                    index: 'IsLockedOut',
                    width: 100,
                    editable: true,
                    edittype: 'checkbox'
                }
        ],
        caption: "Users"
    })
}

Método da Web


        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static List GetUsersJSON()
        {
            using (UserAdministrationSandboxDataContext uasd = new UserAdministrationSandboxDataContext())
            {
                return uasd.GetUserList();
            }
        }

Um objeto JSON da lista


{"__type":"UserAdministrationSandbox.UserData","PKID":"00000000-0000-0000-0000-000000000001","Username":"TestUser","ApplicationName":"Test","Email":"[email protected]","Comment":"TestUser","Password":"D41D8CD98F00B204E9800998ECF8427E","PasswordQuestion":"Is this a blank Password?","PasswordAnswer":null,"IsApproved":true,"LastActivityDate":"\/Date(1298869200000)\/","LastLoginDate":"\/Date(1298869200000)\/","LastPasswordChangedDate":"\/Date(1298869200000)\/","CreationDate":"\/Date(1298869200000)\/","IsOnLine":false,"IsLockedOut":false,"LastLockedOutDate":"\/Date(1298869200000)\/","FailedPasswordAttemptCount":0,"FailedPasswordAttemptWindowStart":null,"FailedPasswordAnswerAttemptCount":null,"FailedPasswordAnswerAttemptWindowStart":null}

questionAnswers(2)

yourAnswerToTheQuestion