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}