2012-01-30 2 views
0

일부 데이터를 채우기 위해 ColdFusion (9.0.1) cfGrid를 사용하고 있습니다. 코드는누군가 ColdFusion cfGrid의 새로 고침 버튼을 클릭 할 때 사용자 정의 메시지를 표시하는 방법 (세션이 종료되었을 때)?

<cfform id="ViewNewCustomerReport" name="ViewNewCustomerReport"> 
    <div class="buttonClass"> 
     <cfinput type="button" id="generateReport" name="generateReport" 
     value="Generate Report" /> 

     <cfinput type="hidden" name="filters" id="filters" 
     bind="javascript:GenerateReport({[email protected]})"/> 
    </div> 
    <br/> 
    <div id="gridContainer"> 
    <cfgrid name="NewCustomerReport" autoWidth="Yes" colheaderbold="true" selectonload="false" width="710" 
    bind="url:index.cfm?fuseaction=ReportsCommon.GetNewCustomerReport&page={cfgridpage}&pagesize={cfgridpagesize}&gridsortcolumn={cfgridsortcolumn}&gridsortDirection={cfgridsortdirection}&filter={filters}" 
    bindOnLoad="false" striperows="true" striperowcolor="##F6F6F6" format="html" pagesize="10"> 
     <cfgridcolumn name="COMPANY_NAME" width="280" header="Company Name" /> 
     <cfgridcolumn name="SUBJECT_ASSIGNED" width="280" header="Subject Assigned" /> 
     <cfgridcolumn name="NO_OF_USERS" header="No. Of users" width="180" /> 
    </cfgrid> 
    </div> 
    <div id="wrapperDiv"><label id="lblError" class="CustomError"></label></div> 
</cfform> 

아래에 주어진 그리고 이것은 자바 스크립트 부분을 누군가가 다른 탭에서 응용 프로그램을 로그 아웃하는 경우 지금

var GenerateReport = function(filters){ 
    var returnVal; 
    var checkForm = $('#ViewNewCustomerReport').validationEngine('validate'); 
    returnVal = dateFrom + '|' + dateTo; 
    if(checkForm) 
    { 
     var gridObject = ColdFusion.Grid.getGridObject("NewCustomerReport"); 
     var store = gridObject.getStore(); 
     store.addListener("load",function(){ 
      if(store.data.items == 0) 
      { 
       gridObject.setVisible(false); 
       $("#gridContainer").hide(); 
       $("#wrapperDiv").show(); 
       $("#wrapperDiv").css("text-align","center"); 
       $("#lblError").text("No record found").css({"font-size":"20px","font-weight":"normal"}); 
      } 
      else 
      { 
       gridObject.setVisible(true); 
       $("#gridContainer").show(); 
       $("#wrapperDiv").hide();  
      } 
     });    
    } 
    else 
    { 
     $('#gridContainer').hide();   
    } 
    return returnVal; 
}; 

이며, 다음은

cfgrid를 같은 몇 가지 메시지를 표시 그리드가 새로 고침됩니다 : 응답 데이터에서 TOTALROWCOUNT 개를 찾지 못했습니다 [자세한 내용을 보려면 URL 매개 변수에 'cfdebug'를 추가하여 디버깅 사용 가능]

0 수집 세션 대가로 밖으로

JSON 데이터는 { "isSessionOut"사실}처럼 HTTP 상태 코드 200 OK HTTP 상태 메시지

그래서 내 질문은 그 대신 기본 오류를 보여주는입니다 메시지 과 같은 내 사용자 지정 메시지를 표시하고 싶습니다. 계속하려면 로그인하십시오..

어떻게 달성 할 수 있습니까 ?? 미리 감사드립니다 ......

답변

0

외부 페이지에서 실행되는 비활성 플러그인을 사용하는 jQuery 또는 유사한 플러그인을 사용하면 세션이 시간 초과되어 정상적으로 사용자를 정상적으로 복귀시킬 때 카운트 다운 할 수 있습니다. 로그인 페이지. 이렇게하면 어떤 페이지에서든이 문제가 발생하지 않습니다.

이 사람은 많은 다른 사람도 있습니다, 좋은 jsFiddle

+0

이미 사용자 정의 팝업 messageEveryWhere을 보여주는 적이의 기능의 OnError 호출 할 수 있습니다) 난 단지 (306)을 검사하고 그것을 작동합니다. 하지만 내 질문은 여기에 CFGrid에서 어떻게 우리가 감지 할 수/응답 데이터를 캐치 및 그에게/C를 보여줍니다 .CFGrid 바인딩 특성은 데이터를 그리드에 바인딩하는 데 사용됩니다. – Subbu

+0

제 제안은 응용 프로그램 수준에서이 문제를 해결하여 개별 구성 요소가 시간 초과되지 않고 전체 페이지가 수행 한 다음이 문제가 발생하지 않도록하는 것입니다. –

+0

죄송합니다. Dale 당신이 마지막으로 주석을 달았습니다. 조금 더 자세히 설명해 주실 수 있습니까? – Subbu

2

ColdFusion에서의 모든 바인딩 작업/Ajax 호출가의 OnError/BindError 핸들러 함수를, 우리가 할 수있는 몇 가지 오류의 시간에 호출, 또는 할 수있다 HTTP 상태 코드를 설정하여 HTTP 응답을 사용하여 호출하십시오. 일부 자체 생성 된 오류 메시지가 원하는 때마다

, 당신은 귀하의 사이트의 응답/작업 페이지에이 코드를 작성할 수 있습니다

error = getpagecontext().getresponse().setstatus(306, "Your session is out");

가 (당신이 HTTP 상태 코드 어떤 일 설정할 수 있습니다 더 후 300 만 세션이 밖으로 때이에 의해

당신은 당신의 cfgrid를