这两天在用Jquery Easyui,在用tabs控件加载datagrid用户控件时遇到个问题。就是当我点击tab切换时回加载用户控件,点击比较慢的时候没事,一旦速度快了就报脚本错误,如下:
我怀疑可能是我点的太快导致datagrid还没加载完毕的原因,但也不太确定。我的代码如下:
1 $(function () { 2 //页面加载时先加载当前选中tab 3 var t = $('#income_check_first').tabs('getSelected'); 4 if (t) { 5 var selected_index = $("#income_check_first").tabs("getTabIndex", t); 6 LoadTabs(t.context.id); 7 } 8 $("#income_check_first").tabs({ 9 onSelect: function (title) { 10 var currTab = $('#income_check_first').tabs('getTab', title); 11 var iframe = $(currTab.panel('options').content); 12 var t = $('#income_check_first').tabs('getSelected'); 13 if (t) { 14 LoadTabs(t.context.id); 15 ShowOrHideButton(t.context.id); 16 } 17 } 18 }); 19 }); 20 //异步加载收件列表控件 21 function LoadTabs(selected_id) { 22 if (selected_id) { 23 var url = GetSystemPost('H') + "/Manage/CheckList.ascx?state_flag=" + selected_id + "&flow_flag=1&M=" + Math.random(); 24 $("#sign_list").text(""); 25 $("#approval_list").text(""); 26 $("#rollback_list").text(""); 27 $.AsynLoadUC(url, null, selected_id, function () { executeByLoad(); }); 28 } 29 }
下面是用户控件页面代码:
1 $(function () { 2 $('#datagrid_checklist').datagrid({ 3 url: '/IPRMIS_H_Services.IncomeService.GetIncomeList.cs', 4 method: 'post', 5 singleSelect: true, 6 checkOnSelect: true, 7 pagination: true, 8 pageSize: 2, 9 rownumbers: true, 10 sortOrder: 'asc', 11 sortName: 'INCOME_ID', 12 remoteSort: false, 13 fitColumns:false 14 }); 15 var state_flag = "<%=Request.QueryString["state_flag"]%>"; 16 var flow_flag = "<%=Request.QueryString["flow_flag"]%>"; 17 $('#datagrid_checklist').datagrid('loadData', { total: 0, rows: [] });//清空列表数据 18 $('#datagrid_checklist').datagrid('load', { state_flag: state_flag, flow_flag: flow_flag, v_state: "REG" }); 19 });
哪位大神给看看,鼓捣一天了还没出来呢。
目测 好像有点小问题,不知道是否 是这个原因。
1. $("#income_check_first").tabs()的声明应该放到var t = $('#income_check_first').tabs('getSelected');的前面,如果还没声明出来,就获取选中,应该会报错。如果页面html中 加了class声明,去掉,统一用js声明。
2.用户控件中,datagrid 如果不要数据,就不要给url,加载了之后,你又要清空,根据多此一举。