当有人点击Coldfusion cfGrid的刷新按钮时(当会话结束时)如何显示自定义消息?

时间:2012-01-30 21:00:04

标签: coldfusion coldfusion-9

我使用Coldfusion(9.0.1)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({generateReport@click})"/>
    </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>

这是javascript部分

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 [通过在网址参数中添加“cfdebug”启用调试以查看更多信息]

当Session退出时,收集的Json数据就是这样 {“isSessionOut”:true} HTTP状态代码200 HTTP状态消息确定

所以我的问题是,而不是显示默认错误消息,我想显示我的自定义消息,如会话已经出来请登录以继续

怎样才能实现这些?提前谢谢......

2 个答案:

答案 0 :(得分:2)

coldfusion中的每个绑定操作/ Ajax调用都有一个OnError / BindError处理函数,可以在出现错误时调用,或者我们可以通过设置HTTP状态代码在HTTP响应的帮助下调用它。

每当你想要一些时 自生成错误消息,您可以在站点的响应/操作页面上编写此代码:

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

(你可以设置任何超过300的HTTP状态代码,但我只检查了306并且它有效)

通过这个你可以调用你的CFGRID

的onError函数

答案 1 :(得分:0)

我会使用在外部页面中运行的jQuery或类似插件并​​检测不活动,然后它甚至可以在会话超时时倒计时并优雅地将您的用户带回登录页面。这样你就不会在任何页面上出现这个问题。

这个很好,还有很多其他的 jsFiddle