java_easyuiシステムのDataGrid(2)


java_easyuiシステムのDataGrid(2)
一:紹介
 
1に基づいてlayoutコンポーネントを追加し、バックグラウンドからフロントにクエリーデータを動的に表示するには、クエリーを個別にlayoutのパネルとして使用します.
 
二:ポイント
1、効果図:
2、左側の折りたたみコンポーネント:
折りたたみコンポーネントは、全体のlayoutのwestレイアウトにあります.次の図の2番目のdivのclassがキーです.
	    <div data-options="region:'west',title:'    ',split:true" style="width:160px;">
	    	<div class="easyui-accordion" data-options="fit:true,border:false">
                <div title="Title1" data-options=" iconCls:'icon-save'" style="padding:10px;">
                	content1
                </div>
                <div title="Title2" data-options="fit:true,border:false,iconCls:'icon-reload',selected:true" style="padding:10px">
                    <ul>
                    	<li><a id="door"  class="easyui-linkbutton" onclick="userManage(id);" data-options="plain:true">  </a> </li>
                    	<li><a id="userManage" class="easyui-linkbutton" onclick="userManage(id);" data-options="plain:true">    </a></li>
                    </ul>
                </div>
            </div>
	    </div>

3、formの保存コンポーネントを問い合わせる:
これは埋め込みページです.埋め込みページのdivをlayoutの容器として使用することに注意し、bodyを使用しないでください.そうしないと、わけのわからない問題が発生します.次のコードは
1、datagrid.jspのlayoutの中部にはtabsのdivが埋め込まれています.
2、このdivの「ユーザー管理」に関するtabにはuserが埋め込まれている.jspページ、
                3、user.jspページはdivを用いてlayoutを行うページであり、北部にクエリー条件を置くform、中部に展示データを置くdatagridである.
  		<div  class="easyui-layout" data-options="fit:true,border:false,">
  			<div data-options="region:'north',border:false,title:'  '" style="height: 140px;overflow: hidden">
  				<form id="searchForm">
  					<table class="datagrid-toolbar" style="height:100%;width:100%">
  						<tr>
  							<th>   </th>
  							<td><input id="username" name="username" style="width: 320px"/></td>
  						</tr>
  						<tr>
  							<th>    </th>
  							<td>
	  							<input name="createTimeStart" editable="false" class="easyui-datetimebox" style="width:155px;" />
	  							 
	  							<input name="createTimeEnd" editable="false" class="easyui-datetimebox" style="width:155px;" />
  							</td>
  						</tr>
  						<tr>
  							<th>    </th>
  							<td>
  								<input name="modifyTimeStart" editable="false" class="easyui-datetimebox" style="width:155px;" />
  								 
  								<input name="modifyTimeEnd" editable="false" class="easyui-datetimebox" style="width:155px;" />
  								<a class="easyui-linkbutton" onclick="show();">  </a>
  								<a class="easyui-linkbutton" onclick="clean();">  </a>
  							</td>
  						</tr>
  					</table>
  				</form>
  				
			</div>
  			
			<div data-options="region:'center',border:false">
				<table id="datagrid"></table>
			</div>
			
		</div>

4、クエリーをクリックして新しいデータをロードする:
これは、loadメソッドの使用であり、loadメソッドパラメータにはオブジェクトが必要です(もちろん、フィールドのname:valueでも構いません).1つは、form内のすべての情報を1つのformオブジェクトにシーケンス化してフロントに渡すことです.
1、初めて入った時にloadして、これは$(function(){$('#datagrid').datagrid({url:',xxx}))の中でloadしたもので、
2、クエリーをクリック:loadが指定したdatagridのデータ、ここでは直接datagridのloadメソッドを使用し、まず他のものではなくdatagridとして展示されているtableのidを選択します.
  			//    
  			function show(){
  				$('#datagrid').datagrid('load',serializeObject($('#searchForm')));
  			}
3、上のコードのserializeObject($('#searchForm')、formのすべての情報をloadとしてオブジェクトに変換するパラメータです.formが伝達するパラメータが非常に多い場合は大幅に簡略化できるが、jqueryが持参した関数ではなく、自分で拡張したもので、下は実は現代コード(js)に置かれている.
serializeObject = function(form){
	var o = {};
	$.each(form.serializeArray(), function(index){
		if(o[this['name']]){
			o[this['name']] = o[this['name']] + this['value'];
		}else{
			o[this['name']] = this['value'];
		}
	});
	return o;
};

三:ページソース
トップページ(datagrid 2.jsp):
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>My JSP 'original.jsp' starting page</title>
    
    <link rel="stylesheet" type="text/css" href="css/easyui/default/easyui.css">
    <link rel="stylesheet" type="text/css" href="css/easyui/icon.css">
    <link rel="stylesheet" type="text/css" href="css/easyui/demo.css">
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript" src="js/jquery.easyui.min.js"></script>
    <script type="text/javascript" src="js/chyUtils.js"></script>
    
    <script type="text/javascript">
    	function userManage(id){
    		console.info(id);
    		if("door" == id){
    			$('#tt').tabs('select', 0);
    		}
    		if("userManage" == id){
    			$('#tt').tabs('select', 1);
    		}
    	}
    </script>
  </head>
  
	<body id="blayout" class="easyui-layout">
	    <div data-options="region:'north', split:false" style="height:100px;"></div>
	    <div data-options="region:'east',title:'    ',split:true" style="width:160px;"></div>
	    <div data-options="region:'west',title:'    ',split:true" style="width:160px;">
	    	<div class="easyui-accordion" data-options="fit:true,border:false">
                <div title="Title1" data-options=" iconCls:'icon-save'" style="padding:10px;">
                	content1
                </div>
                <div title="Title2" data-options="fit:true,border:false,iconCls:'icon-reload',selected:true" style="padding:10px">
                    <ul>
                    	<li><a id="door"  class="easyui-linkbutton" onclick="userManage(id);" data-options="plain:true">  </a> </li>
                    	<li><a id="userManage" class="easyui-linkbutton" onclick="userManage(id);" data-options="plain:true">    </a></li>
                    </ul>
                </div>
            </div>
	    </div>
	    <div data-options="region:'center',title:'  ',"style="overflow: hidden;">
	    	<div id="tt" class="easyui-tabs" data-options="fit:true,border:false,">
			<div title="  " data-options="closable:true" >
				  
			</div>
			<div id="userManage" title="    " data-options="href:'user.jsp',closable:true" >
			</div>
		</div>
	    </div>
	</body>
</html>

埋め込みuser.jsp:
		<script type="text/javascript">
  			$(function(){
  				$('#datagrid').datagrid({
  					url:'login_getJson.action',
  					title: '    ',
  					iconCls:'icon-save',
  					pagination:true,
  					pageSize:10,
  					pageList:[10,20,30,40,50,60,70,80,90,100],
  					fit:true,//      
  					fitColumns:true,//                    、                       、             
  					nowrap:false,//          、   false、    、                :          
  					border:false,
  					idFeild:'id',//  、         id、    id、      
  					sortName:'id',//           (   field      )
  					sortOrder:'asc',//           	                  、                       :sort order,                  
  					columns:[ [{
  							title:'  ',
  							field:'id',
  							width:100,//    
//   							sortable:true,//        
  						},{
  							title:'  ',
  							field:'userName',
  							width:100,//    
  							
  						},{
  							title:'  ',
  							field:'passWord',
  							width:100,//    
  						}] ],
  						toolbar:[{
								text: '  ',
								iconCls:'icon-add',
								handler:function(){
								}
  							},'-',{
  								text: '  ',
								iconCls:'icon-remove',
								handler:function(){
								}
  	  						},'-',{
  								text: '  ',
								iconCls:'icon-edit',
								handler:function(){
								}
  	  					},'-']
  				});	
  			});
  			
  			//    
  			function show(){
  				$('#datagrid').datagrid('load',serializeObject($('#searchForm')));
  			}
  			
  			//      、          
  			function clean(){
  				$('#datagrid').datagrid('load',{});
  				$('#searchForm').find('input').val('');
  			}
  		</script>
  		
  		<div  class="easyui-layout" data-options="fit:true,border:false,">
  			<div data-options="region:'north',border:false,title:'  '" style="height: 140px;overflow: hidden">
  				<form id="searchForm">
  					<table class="datagrid-toolbar" style="height:100%;width:100%">
  						<tr>
  							<th>   </th>
  							<td><input id="username" name="username" style="width: 320px"/></td>
  						</tr>
  						<tr>
  							<th>    </th>
  							<td>
	  							<input name="createTimeStart" editable="false" class="easyui-datetimebox" style="width:155px;" />
	  							 
	  							<input name="createTimeEnd" editable="false" class="easyui-datetimebox" style="width:155px;" />
  							</td>
  						</tr>
  						<tr>
  							<th>    </th>
  							<td>
  								<input name="modifyTimeStart" editable="false" class="easyui-datetimebox" style="width:155px;" />
  								 
  								<input name="modifyTimeEnd" editable="false" class="easyui-datetimebox" style="width:155px;" />
  								<a class="easyui-linkbutton" onclick="show();">  </a>
  								<a class="easyui-linkbutton" onclick="clean();">  </a>
  							</td>
  						</tr>
  					</table>
  				</form>
  				
			</div>
  			
			<div data-options="region:'center',border:false">
				<table id="datagrid"></table>
			</div>
			
		</div>	

参照js:
serializeObject = function(form){
	var o = {};
	$.each(form.serializeArray(), function(index){
		if(o[this['name']]){
			o[this['name']] = o[this['name']] + this['value'];
		}else{
			o[this['name']] = this['value'];
		}
	});
	return o;
};

四:補足説明
 
1、datagridにDUALを行う場合、toolbarを使用して直接機能ボタンを追加してもよいし、divを使用して
2、datatimeboxを使用する場合はeditable=falseを付ける
3、クエリー時、reloadではなくloadを使用し、loadクエリー時にページをトップページに戻し、reloadでは現在のページ番号が保持され、クエリー結果にも現在のページのデータが表示され、クエリー結果のレコード数が現在のページ番号*各ページのレコード数に達しない場合、空が表示され、最下のステータスバーにも異常情報が表示されます.
4、埋め込みページをlayoutとして使用する場合、bodyをclass="easyui-layout"にdivをlayoutのコンテナとして設定しないでください.
5、折り畳まれたコンポーネント式はclass="easyui-accordion"--divで設定されます.想像していたような埋め込みlayoutではありません.
6、class="easyui-accordion"のオプションをクリックしてtabsのコンポーネントを動的に表示できます.
詳細:java_easyuiシステムのディレクトリ-00