jQgrid ist gridComplete Ereignis wird ausgelöst, aber loadComplete nicht brennen... warum?
In meinem ASP.NET -Projekt bin ich die Integration jQgrid, um Daten anzuzeigen. Mein Problem ist loadComplete event wird nicht gefeuert. Meine gesamte jQgrid-code ist wie folgt:
function getData(jqGridParams)
{
var sortcookieval = $.cookie("ItemGridSortInfo");
var sname = "";
var sorder = "";
if (sortcookieval != null)
{
var sortInfo = sortInfoFromCookie("ItemGridSortInfo");
sname = sortInfo.sortname;
sorder = sortInfo.sortorder;
}
else
{
sname = "";
sorder = "asc";
}
var params = new Object();
params.pageIndex = jqGridParams.page;
params.pageSize = jqGridParams.rows;
params.sortIndex = sname; //jqGridParams.sidx;
params.sortDirection = sorder; //jqGridParams.sord;
params._search = jqGridParams._search;
if (jqGridParams.filters === undefined)
params.filters = null;
else
params.filters = jqGridParams.filters;
$.ajax({
url: 'WSAjax.asmx/GetDataForGrid',
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify(params),
success: function (data, textStatus)
{
if (textStatus == "success")
{
var grid = $("#ItemGrid")[0];
grid.addJSONData(data.d);
}
},
error: function (jqXHR, textStatus, errorThrown)
{
alert(textStatus, errorThrown);
}
});
}
function saveSortInfoToCookie(name, grid)
{
var sortInfo = new Object();
sortInfo.sortname = grid.jqGrid('getGridParam', 'sortname');
sortInfo.sortorder = grid.jqGrid('getGridParam', 'sortorder');
//$('#Hidden').val(JSON.stringify(gridInfo));
//alert($('#Hidden').val());
$.cookie(name, JSON.stringify(sortInfo), {expires: 5});
}
function sortInfoFromCookie(name)
{
var c = $.cookie(name);
if (c === null)
return;
return $.parseJSON(c);
}
$(document).ready(function () {
var oItemGrid = $("#ItemGrid");
oItemGrid.jqGrid({
datatype:
function (jqGridParams) {
getData(jqGridParams);
},
colNames: ['Type', 'Name', 'Desc'],
colModel: [
{ name: 'Type', index: 'Type', width: 40 },
{ name: 'Name', index: 'Name', width: 40 },
{ name: 'Desc', index: 'Desc', width: 40, sortable: false}],
autowidth: true,
height: 'auto',
rowNum: 10,
rowList: [10, 20, 30, 40],
viewrecords: true,
gridview: true,
autoencode: true,
ignoreCase: true,
caption: 'Remember Sorting and Filtering Functionality',
pager: '#IGPager',
onSortCol: function (colModel, colName, sortOrder) {
saveSortInfoToCookie("ItemGridSortInfo", $("#ItemGrid"));
var storeval = $.cookie("ItemGridSortInfo");
alert("Saving sort info in cookie: " + storeval);
},
gridComplete: function () {
var prvData = $.cookie("ItemGridSortInfo");
alert("Reading saved sort info from cookie : " + prvData);
var pageno = $.cookie("ItemGridPageInfo");
alert("Reading saved page no. from cookie:" + pageno);
},
loadComplete: function (data) {
if(data != null)
{
alert("Inside loadComplete..");
}
},
//loadonce: true
}).jqGrid('navGrid', '#IGPager', { edit: false, add: false, del: false }, {}, {}, {}, {}, {});
});
und wenn möglich bitte sagen Sie mir den Unterschied zwischen gridComplete und loadComplete nach meinem Szenario....
InformationsquelleAutor Rahul | 2013-08-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, Sie setzen
datatype
als Funktion (benutzerdefinierte Funktion zum abrufen von Daten), anstattlocal
. Wenn Sie eine Funktion verwenden, dann sollten Sie rufenloadComplete
in Ihre eigene Implementierung.Also, wenn Sie es ändern, um andere Typ, wie lokale, die
loadComplete
bearbeitet werden, werden automatisch von jqGrid. Ich erstellte eine demo für Sie.Demo
datatype
als Funktion, wenn man$.ajax
intern. sollte mandatatype: "json", url: "WSAjax.asmx/GetDataForGrid", mtype: "POST", ajaxGridOptions: { contentType: "application/json", serializeRowData: function (data) { return JSON.stringify(data); } }, prmNames: {page: "pageIndex", rows: "pageSize", sort: "sortIndex", order: "sortDirection"}
.Man kann
beforeRequest
zu speichern zusätzliche Informationen in dem cookie (in meiner Meinung nach die Verwendung vonlocalStorage
wie beschrieben in die Antwort ist besser als die Verwendung von cookie). Wenn man wirklich verwenden müssendatatype
als Funktion, dann ein rufen viele Rückrufe wieloadBeforeSend
,loadComplete
undloadError
ausgetData
Funktion. Siehe die Antwort für die entsprechenden code-Beispiel.In prmNames Sie haben nicht angegeben, wie pass Filter-Parameter. Ich überprüfte die Dokumentation für Filter, aber Sie erwähnen nicht über diese.
Die Namen der parameter, die Sie verwenden, ist
filters
ist die standard-Namen. Sie könnenprmNames
ändern die Namen der Parameter. So brauchen Sie nicht, um anzugeben und Eigentum inprmNames
zu habenfilters
an den server gesendet. Das format des Werts derfilters
parameter beschrieben werden hier.Machte ich Veränderungen in meinem code nach Ihren ersten Vorschlag... Sein Aufruf web-service-alles funktioniert perfekt aber das problem ist seine nicht angezeigt Daten im grid. Ich habe bereits geschrieben, eine Frage hier. was soll ich tun um dieses problem zu beheben??
InformationsquelleAutor zs2020