1. 程式人生 > >datagrid放在隱藏層不顯示資料的問題

datagrid放在隱藏層不顯示資料的問題

<div id="userDiv" style="display:none;">
     <table id="detailUser" class="easyui-datagrid" style="width: 100%;">
	 <thead data-options="frozen:true,">
	        <tr>
		<th width="15%" data-options="align:'center',field:'userName'">使用者名稱</th>
		<th width="35%"	data-options="align:'center',field:'roleNames',formatter: renderRole">所屬角色</th>
		<th width="10%" data-options="align:'center',field:'deptName',">部門</th>
		<th width="15%"	data-options="align:'center',field:'profession'">專業</th>
		<th width="10%" data-options="align:'center',field:'city',">地市</th>
		<th width="10%" data-options="align:'center',field:'district'">區縣</th>
	        </tr>
         </thead>
     </table>
</div>

把datagrid放在隱藏層中,動作觸發的時候讓這個隱藏層show,但是並沒有顯示出資料,firebugs顯示後臺傳遞過來一條資料,只是datagrid沒有加載出來

$("#detailUser").datagrid({
		url:"${basePath}grid/userList?role=ROLE_USER&gridId="+id,
		nowrap:false,
		rownumbers:true,
		fit:true,
		idField:'id',
		singleSelect:true,
		pagination:true,
		method:'post',
		loadMsg:'載入中...',
		emptyMsg:'暫無資料',
});
$('#userDiv').show();		
$('#gridDetail').window('open');

上圖主要是因為fit:true這個屬性與隱藏層的衝突。如果把fit:true去掉。則顯示為下圖,比上圖稍微好些,只是資料還是沒有顯示出來

然後就百度了一下,有些說是應該把datagrid重新resize一下,

$("#detailUser").datagrid({
			url:"${basePath}grid/userList?role=ROLE_USER&gridId="+id,
			nowrap:false,
			rownumbers:true,
			idField:'id',
			singleSelect:true,
			pagination:true,
			loadMsg:'載入中...',
			emptyMsg:'暫無資料',
});
$("#detailUser").datagrid("resize");
$('#resourceDiv').hide();
$('#userDiv').show();		
可是我按照上邊程式碼試了一下依然沒有效果,原理的東西我探究不到,最後是給datagrid加了高度,才正常顯示出資料
$("#detailUser").datagrid({
			url:"${basePath}grid/userList?role=ROLE_USER&gridId="+id,
			nowrap:false,
			rownumbers:true,
			height:540,
			idField:'id',
			singleSelect:true,
			pagination:true,
			loadMsg:'載入中...',
			emptyMsg:'暫無資料',
});
$('#resourceDiv').hide();
$('#userDiv').show();		

後來再次遇到在隱藏層中不顯示資料的問題,然後我設定了高度,但是卻怎麼也顯示不出來資料,於是又用了resize方法發現不是resize方法不管用,而是之前的放錯位置了

圖1

在不給datagrid設定高度的情況下,顯示出來的如上圖1,

$("#dg").datagrid("resize");
$('#task').show();
如上程式碼,顯示效果依然如圖1

但是如果將以上程式碼調換位置,即可正常顯示

$('#task').show();
$("#dg").datagrid("resize");
圖2
圖3

並且利用resize可以根據資料顯示的多少來調整高度,這樣顯示更靈活。如圖2和圖3所示


圖4

圖4為利用resize方法並且,給datagrid設定了固定高度之後的效果