2009-05-14 4 views
0

저는 YUI 2.7.0을 사용하고 있으며 클라이언트 측 페이지 매김을 중단했으며 이제 서버 측 페이지 매김을 시도하고 있습니다 (쿼리로 인해 수천 개의 결과). 현재, 결과가 표시되지 않습니다 ("No records found."메시지가 나타납니다). 웹에서 답변을 찾지 못하는 것 같습니다. alert() 호출에 올바른 숫자가 표시되므로 서버에서 무언가가 반환되고 있음을 알 수 있습니다. 문제가 jobsCallback 또는 handleDataReturnPayload에 있다고 의심되지만 거기에서 붙어 있습니다. 어떤 힌트?yui 및 서버 측 페이지 매기기

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); 
    } 

답변

3

경고 발생 직후 오류가 발생하지만 삼키는 중입니다. FireBug Break on All Errors config가이를 확인합니다. oPayload가 정의되지 않은 가능성이 있습니다. 이것은 콜백 객체의 argument 속성 값에 의해 설정됩니다.

그래서 당신은 그것을 행한,

jobsCallback = { 
    success : jobsTable.onDataReturnInitializeTable, 
    failure : jobsTable.onDataReturnInitializeTable, 
    scope : jobsTable, 
    argument : {} 
}; 

또는

jobsTable.handleDataReturnPayload = function(oRequest, oResponse, oPayload) { 
    oPayload = oPayload || {}; 
    oPayload.totalRecords = oResponse.meta.totalResultsAvailable; 
    return oPayload; 
}; 

HTH

+0

네와이 문제를 얻을 수 있어야합니다. 고마워요! –