anchor.diff:  					str += '<tr>';
   					for (var i=0; i<girdHead.length; i++) {
   						var f = girdHead[i].field;
  -						var val = data.value[n][f];
  +						var val = data.value[n][f];		
  +						
  +						
  +						if ( !(typeof girdHead[i].formatter == 'undefined') && (typeof girdHead[i].formatter === 'function') ) {
  +							
  +							str += '<td>' + girdHead[i].formatter(val) + '</td>';
  +							continue;
  +						}
  +						
  +						
   						if($.type(val) === "string") {
   							str += '<td>' + val.replace(/</g, "&lt;").replace(/>/g, "&gt;"); + '</td>';
   						} else {
  
positive.code: function queryClear() {
  	$("#id").val('');
  	$("#name").val('');
  	$("#queryGridTable").html( getQueryGridHeaderOnly() );
  }      	
  </script>
  
  <br>
  
negative.code:       
  <button type="button" class="btn btn-primary" id="btnQuery" onclick="queryGrid();">Query</button>
  <button type="button" class="btn btn-primary" id="btnClear" onclick="queryClear();">Clear</button>
  
  <script>
  
  function getQueryGridFormatter(value) {
  	var str = '';
  	str += '<img alt="edit" title="Edit" src="./images/edit.png" onclick="eee("' + value + '");"/>';
  	str += '&nbsp;&nbsp;';
  	str += '<img alt="delete" title="Delete" src="./images/delete.png" onclick="ddd("' + value + '");"/>';
  	return str;
  }
  function getQueryGridHeader() {
  	return [
  		{ name: "#", 	field: "oid", 	formatter: getQueryGridFormatter },
  		{ name: "Id", 	field: "sysId"					},
  		{ name: "Name", field: "name"					},
  		{ name: "Host", field: "host"					},
  		{ name: "Context path", field: "contextPath"	},
  		{ name: "Local", field: "isLocal"				}
  	];
  }
  
  
  function queryGrid() {
  	xhrSendParameter(
  			'./core.sysSiteQueryGridJson.do', 
  