Ich benutze YUI 2.7.0, und ich habe die clientseitige Seitennummerierung heruntergefahren, und versuche nun, die serverseitige Paginierung abzufangen (Die Abfrage könnte möglicherweise Tausende von Ergebnisse). Im Moment werden keine Ergebnisse angezeigt (Ich bekomme die Meldung "No records found."). Ich kann keine Antwort im Internet finden. Der Aufruf von alert() zeigt die richtigen Zahlen an, daher weiß ich, dass etwas vom Server zurückgegeben wird. Ich vermute, das Problem ist in jobsCallback oder handleDataReturnPayload, aber ich stecke von dort. Irgendwelche Hinweise?yui und serverseitige Paginierung
function jobStatusFormatter(elCell, oRecord, oColumn, oData)
{
var messages =
[
<c:forEach var="x" begin="0" end="17">
"<fmt:message key="job.status.${x}"/>",
</c:forEach>
];
elCell.innerHTML = messages[oData];
}
var jobColumns =
[
{key:"lotNumber", label:"<fmt:message key="job.lotNumber"/>", sortable:true},
{key:"scheduledStartDate", label:"<fmt:message key="job.startDate"/>", sortable:true, formatter:"date"},
{key:"scheduledCompletionDate", label:"<fmt:message key="job.completionDate"/>", sortable:true, formatter:"date"},
{key:"itemNumber", label:"<fmt:message key="job.itemNumber"/>", sortable:true},
{key:"statusType", label:"<fmt:message key="job.statusType"/>", sortable:true, formatter:jobStatusFormatter},
{key:"plannerCode", label:"<fmt:message key="job.plannerCode"/>", sortable:true},
{key:"scheduledGroup", label:"<fmt:message key="job.scheduledGroup"/>", sortable:true},
{key:"organization", label:"<fmt:message key="job.organization"/>", sortable:true}
];
var jobsDataSource = new YAHOO.util.DataSource("<%=request.getContextPath()%>/secure/xml/jobs.do?");
jobsDataSource.connMethodPost = true;
jobsDataSource.responseType = YAHOO.util.DataSource.TYPE_XML;
jobsDataSource.responseSchema =
{
resultNode: "job",
fields:
[
"id",
"lotNumber",
"plannerCode",
"scheduledGroup",
"scheduledStartDate",
"scheduledCompletionDate",
"itemNumber",
"statusType",
"organization"
],
metaNode: "jobs",
metaFields:
{
totalResultsAvailable : "totalResultsAvailable",
totalResultsReturned : "totalResultsReturned"
}
};
var jobsConfigs =
{
initialLoad: false,
dynamicData: true,
paginator: new YAHOO.widget.Paginator(
{
rowsPerPage:15,
rowsPerPageOptions : [15,25,50,100]
})
};
var jobsTable = new YAHOO.widget.DataTable("jobsDiv", jobColumns, jobsDataSource, jobsConfigs);
jobsTable.subscribe("rowMouseoverEvent", jobsTable.onEventHighlightRow);
jobsTable.subscribe("rowMouseoutEvent", jobsTable.onEventUnhighlightRow);
jobsTable.set("selectionMode","single");
jobsTable.subscribe("rowClickEvent", function(args)
{
var target = args.target;
var record = this.getRecord(target);
window.location="job.do?id="+record.getData("id");
});
jobsTable.handleDataReturnPayload = function(oRequest, oResponse, oPayload)
{
alert("totalResultsAvailable="+oResponse.meta.totalResultsAvailable+", totalResultsReturned="+oResponse.meta.totalResultsReturned);
oPayload.totalRecords = oResponse.meta.totalResultsAvailable;
return oPayload;
};
var jobsCallback =
{
success : jobsTable.onDataReturnInitializeTable ,
failure : jobsTable.onDataReturnInitializeTable ,
scope : jobsTable
};
function getQueryParams()
{
var form = document.forms[0];
var lotNumber = form.lotNumber.value;
var itemNumber = form.itemNumber.value;
var plannerCode = form.plannerCode.value;
var scheduledGroup = form.scheduledGroup.value;
var statusType = form.statusType.value;
var organization = form.organization.value;
return "lotNumber="+lotNumber+
"&itemNumber="+itemNumber+
"&statusType="+statusType+
"&plannerCode="+plannerCode+
"&scheduledGroup="+scheduledGroup+
"&organization="+organization;
}
/* Called when submit button pressed */
function findJobs()
{
// Sends a request to the DataSource for more data
jobsTable.showTableMessage(YAHOO.widget.DataTable.MSG_LOADING);
jobsDataSource.sendRequest(getQueryParams(), jobsCallback);
}
Yep, das es tat. Danke vielmals! –