2009-11-02 82 views
2

我有一个jqgrid表通过XML通过apache2 web服务器查询MySQL DBMS。在jQGrid中报告用户错误

有时每当DB服务器关闭或服务器端程序遇到时 某种程度的崩溃jqgrid只是冻结等待XML数据到达。

在这种情况下,我最好让jqgrid用户意识到这个问题,并因此显示一个温和的消息来描述annomly的类型。

我想知道有没有具体的这种情况下任何的jqGrid选项

我使用:

jquery-1.3.2 
jquery-ui-1.7.2 
jquery.jqGrid-3.5.3 

感谢,

回答

1

如果用于jqGrid的您正在使用的数据类型functionjQuery.agax然后将您的逻辑放入错误处理程序。唯一的问题是,您必须手动填充网格,并且没有“加载”提示,尽管您可以创建一个提示。

本示例取自调用ASP.NET WCF服务时使用的常用模式,我的结果对象包含分页器的int属性和行集合,这在myGrid.setGridParams中定义。

datatype: function(postdata) { 
    $.ajax({ 
     type: "POST", 
     url: 'SomeService.svc/SomeGetMethod', 
     data: JSON.stringify(postdata), 
     dataType: "json", 
     contentType: "application/json; charset=utf-8", 
     success: function(res) { 
     myGrid.clearGridData(); 
     for (var i = 0; i < res.d.rows.length; i++) { 
      myGrid.addRowData(i + 1, res.d.rows[i]); 
     } 
     myGrid.setGridParam({ 
      page: postdata.page, 
      lastpage: res.d.total, 
      records: res.d.records, 
      total: res.d.total 
     }); 
     myGrid.each(function() { 
      if (this.grid) this.updatepager(); 
     }); 
     }, 
     error: function (XMLHttpRequest, textStatus, errorThrown) { 
     // Code to handle error. 
     } 
    }); 
}, 
0

您可以使用jqGrid的定义loadError事件(见documentation)。例如:

//Catch errors 
loadError = function(xhr, textStatus, errorThrown) { 
    var error_msg = xhr.responseText   
    var msg = "Some errors occurred during processing:" 
    msg += '\n\n' + error_msg 
    alert(msg) 
    }