项目中,使用到了easyui框架的datagrid控件,可是在初始化加载数据的时候,控制器的action执行了2次,这样就多出了一次查询数据的过程,虽然在页面上看不出来有第二次加载的存在,但实际存在的问题,总是让人心里不爽。
table标签:
<table id="List" style="width:100%;height:100%"></table>
datagrid的初始化代码:
$(function () {
$('#List').datagrid({
url: '/xxxx',
width: ...,
height:...,
methord: 'post',
...
});
});
在不明原因的情况下,在网上翻阅了很多帖子,但都是千篇一律,各种去掉table标签中的class="easyui-datagrid",感觉这是一条万能的解决方案,但实际情况并非如此。但在无意间,看到一个说明是,重复请求url是因为在js中给这个easyui表格加了双击事件和右键事件。
恰巧我的表格就有双击事件,查看了下,代码如下:
在页面初始化时,这个双击操作也要跟着初始化,所以在初始化时,表格操作两次,url也就执行了两次。$(function () { $("#List").datagrid({ onDblClickRow: function (rowIndex, rowData) { var row = $('#List').datagrid('getSelected'); if (row != null) { ......DO SOMETHING... } } }); });
然后尝试将该双击事件放到表格的初始化中,并将原表格的双击事件注释掉,修改如下:
$(function () { $('#List').datagrid({ url: '/xxxx', width: ..., height:..., methord: 'post', ... onDblClickRow: function (rowIndex, rowData) { var row = $('#List').datagrid('getSelected'); if (row != null) { ...DO SOMETHING... } } }); });
调试后发现,问题没有了。减少了一次对表格的操作,也就减少了一次请求。