﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Meta Model Enabling-随笔分类-Ajax</title><link>http://www.blogjava.net/frogfool/category/17594.html</link><description>元模型使能</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 23:15:18 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 23:15:18 GMT</pubDate><ttl>60</ttl><item><title>XPagination</title><link>http://www.blogjava.net/frogfool/archive/2006/12/11/86788.html</link><dc:creator>frogfool</dc:creator><author>frogfool</author><pubDate>Sun, 10 Dec 2006 16:51:00 GMT</pubDate><guid>http://www.blogjava.net/frogfool/archive/2006/12/11/86788.html</guid><wfw:comment>http://www.blogjava.net/frogfool/comments/86788.html</wfw:comment><comments>http://www.blogjava.net/frogfool/archive/2006/12/11/86788.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/frogfool/comments/commentRss/86788.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/frogfool/services/trackbacks/86788.html</trackback:ping><description><![CDATA[
		<p>function XPagination() {<br /> this.container = null;<br /> <br /> this.width = '100%'; <br /> this.count = 0; // record total count<br /> this.index = 1; // page index<br /> this.size = 10; // record count per page<br /> this.length = 0;// current page record count<br /> this.onPaginationHandler = null;<br /> <br /> this.first = null;<br /> this.back = null;<br /> this.next = null;<br /> this.last = null;<br /> this.info = null;<br /> <br /> this.jump = null;<br /> this.resize = null;<br /> this.jumper = null;<br /> this.resizer = null;<br />}<br />XPagination.prototype.init = function(context) {<br /> this.context = context;<br /> this.width = (this.context.width) ? this.context.width : '100%';<br /> this.count = (this.context.count) ? this.context.count : 0; <br /> this.index = (this.context.index) ? this.context.index : 1; <br /> this.size = (this.context.size) ? this.context.size : 10;<br /> this.length = (this.context.length) ? this.context.length : 0; <br /> this.onPaginationHandler = (this.context.onPaginationHandler) ? this.context.onPaginationHandler : null;<br />};</p>
		<p>XPagination.prototype.create = function(containerName, context) {<br /> this.container = $(containerName); <br /> <br /> this.init(context);<br /> <br /> var s = new Array();<br /> s[s.length] = '&lt;table style="width:' + this.width + ';" class="x_pagination_bar2" border="0" cellspacing="0" cellpadding="0" align="center"&gt;&lt;tr&gt;';<br /> s[s.length] = '&lt;td width="20" height="20"&gt;&lt;input id="first" type="button" class="x_pagination_first" value="" title="first" /&gt;&lt;/td&gt;';<br /> s[s.length] = '&lt;td width="20"&gt;&lt;input id="back" type="button" class="x_pagination_back" value="" title="back" /&gt;&lt;/td&gt;';<br /> s[s.length] = '&lt;td width="20"&gt;&lt;input id="next" type="button" class="x_pagination_next" value="" title="next" /&gt;&lt;/td&gt;';<br /> s[s.length] = '&lt;td width="20"&gt;&lt;input id="last" type="button" class="x_pagination_last" value="" title="last" /&gt;&lt;/td&gt;';<br /> s[s.length] = '&lt;td class="x_pagination_font"&gt;&amp;nbsp;第&lt;span id="jumper"&gt;loading...&lt;/span&gt;页 ';<br /> <br /> s[s.length] = '(&lt;span id="resizer"&gt;loading...&lt;/span&gt;行/页)';<br /> <br /> s[s.length] = '&lt;font id="info"&gt;(loading...)&lt;/font&gt;';<br /> s[s.length] = '&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;';<br /> <br /> this.container.innerHTML = s.join('');<br /> <br /> this.first = this.container.all('first');<br /> this.back = this.container.all('back');<br /> this.next = this.container.all('next');<br /> this.last = this.container.all('last');<br /> this.jump = this.container.all('jump');<br /> this.jumper = this.container.all('jumper');<br /> this.resizer = this.container.all('resizer');<br /> this.info = this.container.all('info');<br /> <br /> this.set(context);<br />};</p>
		<p> </p>
		<p>XPagination.prototype.set = function(context) {<br /> var the = this;</p>
		<p> this.width = (context.width) ? context.width : this.width;<br /> this.count = (undefined != context.count) ? context.count : this.count;  <br /> this.index = (undefined != context.index) ? context.index : this.index; <br /> this.size = (undefined != context.size) ? context.size : this.size;<br /> this.length = (undefined != context.length) ? context.length : this.length;<br /> <br /> this.context.count = this.count;<br /> <br /> var pages = 0;<br /> //alert(this.count);<br /> if(this.count&gt;0 &amp;&amp; this.size!=0) {<br />  var pages = Math.ceil(this.count / this.size);<br /> }</p>
		<p> //alert(this.resize.value);<br /> if(this.count&gt;0) {<br />  this.info.innerHTML = ' &amp;nbsp; (共&lt;strong&gt;' + this.count + '&lt;/strong&gt;行/共&lt;strong&gt;' + pages + '&lt;/strong&gt;页)';<br />  if(pages&gt;1) {<br />   var o = new Array(); <br />   for(var i = 1; i&lt;=pages; i++) {  <br />    o[o.length] = '\n&lt;option value="' + i + '"' + ((i==this.index) ? ' selected' : '') + '&gt;&amp;nbsp;' + i + '&amp;nbsp;&lt;/option&gt;';;<br />   }<br />   //alert(o.join(''));<br />   this.jumper.innerHTML = '&amp;nbsp;&lt;select id="jump" style="font-size:10;" class="x_select" title="jump to"&gt;' + o.join('') + '&lt;/select&gt;&amp;nbsp;';<br />  <br />   this.jump = this.jumper.all('jump');  <br />  } else {<br />   this.jumper.innerHTML = '&lt;strong&gt;1&lt;/strong&gt;';<br />  }<br /> } else {<br />  this.info.innerHTML = '';<br />  this.jumper.innerHTML = '&lt;strong&gt;' + this.index + '&lt;/strong&gt;';<br /> } <br /> <br /> <br />  <br /> <br /> //(the.onRowClickHandler || Prototype.emptyFunction)({rowId:tInput.value, checked:tInput.checked});<br /> if(context.onPaginationHandler) {<br />  this.onPaginationHandler = context.onPaginationHandler;<br /> }<br /> <br /> <br /> o = [];<br /> <br /> /*<br /> if(this.size&gt;=this.count) {<br />  o[o.length] = '&lt;strong&gt;' + this.size + '&lt;/strong&gt;';<br /> } else {<br /> }*/<br />  o[o.length] = '&lt;select id="resize" name="resize" style="font-size:10;" class="x_select" &gt;';<br />  var stepLength = 5;<br />  var tCount = this.count;<br />  if(tCount&lt;0) {<br />   tCount = 101;<br />  }<br />  for(var t = 5; t&lt;=50 &amp;&amp; t&lt;=(tCount + this.size); t = t + stepLength) {<br />   o[o.length] = '&lt;option value="' + t + '"' + ((t==this.size)? ' selected': '') + '&gt;' + t + '&lt;/option&gt;';   <br />  }<br />  o[o.length] = '&lt;/select&gt;';<br /> <br /> this.resizer.innerHTML = o.join('');<br /> <br /> this.resize = this.container.all('resize');<br /> if(this.resize) {<br />  this.resize.value = this.size;<br /> }<br /> <br /> if(1 != this.index) {<br />  this.enable(this.first);<br />  this.first.onclick = function() {<br />   (the.onPaginationHandler || Prototype.emptyFunction)({index:1, size:the.size, count:the.count, length:the.length});<br />  };<br /> } else {<br />  this.disable(this.first);   <br /> }<br /> <br /> if(this.index &gt; 1) {<br />  this.enable(this.back);<br />  this.back.onclick = function() {<br />   (the.onPaginationHandler || Prototype.emptyFunction)({index:the.index - 1, size:the.size, count:the.count, length:the.length});<br />  };<br /> } else {<br />  this.disable(this.back);<br /> }<br /> <br /> if((this.index &lt; pages) || (this.count&lt;=0 &amp;&amp; this.length==this.size)) {<br />  this.enable(this.next);<br />  this.next.onclick = function() {<br />   (the.onPaginationHandler || Prototype.emptyFunction)({index:the.index + 1, size:the.size, count:the.count, length:the.length});<br />  };<br /> } else {<br />  this.disable(this.next);<br /> }<br /> <br /> if((this.index &lt; pages) || (this.count&lt;=0 &amp;&amp; this.length==this.size)) {<br />  this.enable(this.last);<br />  this.last.onclick = function() {<br />   (the.onPaginationHandler || Prototype.emptyFunction)({index:pages, size:the.size, count:the.count, length:the.length});<br />  };<br /> } else {<br />  this.disable(this.last);<br /> }<br /> <br /> if(this.jump) { <br />  this.jump.onchange = function() {<br />   (the.onPaginationHandler || Prototype.emptyFunction)({index:the.jump.selectedIndex + 1, size:the.size, count:the.count, length:the.length});<br />  };<br /> }<br /> <br /> if(this.resize) {<br />  this.resize.onchange = function() {<br />   the.size = the.resize.value;<br />   (the.onPaginationHandler || Prototype.emptyFunction)({index:1, size:the.size, count:the.count, length:the.length});<br />  };<br /> }<br />};</p>
		<p>XPagination.prototype.disable = function(btn) {<br /> btn.disabled = true;<br /> btn.className = 'x_pagination_' + btn.id + '_disabled';<br />};</p>
		<p>XPagination.prototype.enable = function(btn) {<br /> btn.disabled = false;<br /> btn.className = 'x_pagination_' + btn.id;<br />};<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />.x_pagination_bar {<br /> height:20;<br /> width:100%;<br /> border:0px;<br /> color:#330033; <br /> font-size:12px;<br /> font-family:Verdana, Simsun;<br /> background-image:url(../image/xpagination/x_paginationbar_bg.gif);<br />}</p>
		<p>.x_pagination_font {<br /> color:#000000;<br /> font-size:12px;<br /> font-family:Verdana, Simsun;<br />}</p>
		<p>.x_pagination_jump {<br /> height:18px;<br /> color:#330033;<br /> font-size:9px;<br /> border:1px #607BAC solid;<br /> font-family:Verdana, Simsun;<br />}</p>
		<p>.x_pagination_first       {background:url(../image/xpagination/x_icon_first.gif          ) no-repeat 0 0; } <br />.x_pagination_back        {background:url(../image/xpagination/x_icon_back.gif           ) no-repeat 0 0; }<br />.x_pagination_next        {background:url(../image/xpagination/x_icon_next.gif          ) no-repeat 0 0; }<br />.x_pagination_last        {background:url(../image/xpagination/x_icon_last.gif           ) no-repeat 0 0; }<br />.x_pagination_first_disabled {background:url(../image/xpagination/x_icon_first_disabled.gif ) no-repeat 0 0; } <br />.x_pagination_back_disabled  {background:url(../image/xpagination/x_icon_back_disabled.gif  ) no-repeat 0 0; }<br />.x_pagination_next_disabled  {background:url(../image/xpagination/x_icon_next_disabled.gif ) no-repeat 0 0; }<br />.x_pagination_last_disabled  {background:url(../image/xpagination/x_icon_last_disabled.gif  ) no-repeat 0 0; }</p>
		<p>.x_pagination_first          ,<br />.x_pagination_back           ,<br />.x_pagination_next           ,<br />.x_pagination_last           ,<br />.x_pagination_first_disabled ,<br />.x_pagination_back_disabled  ,<br />.x_pagination_next_disabled  ,<br />.x_pagination_last_disabled  {<br /> cursor:hand;                                            <br /> border:0px;                                             <br /> width:16px;                                             <br /> height:16px;                                             <br />}<br /><br /><br /><br /><br /><br /><br /><br /><br /><br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;XPagination&lt;/title&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;&lt;/meta&gt;</p>
		<p>&lt;link href="resource.prototype.css" rel="stylesheet" type="text/css"&gt;&lt;/link&gt;<br />&lt;link href="../theme/default/style/index.css" rel="stylesheet" type="text/css"&gt;&lt;/link&gt;<br />&lt;script language="JavaScript" type="text/JavaScript" src="../../common/script/prototype.js"&gt;&lt;/script&gt;<br />&lt;script language="JavaScript" type="text/JavaScript" src="../script/xpagination.js"&gt;&lt;/script&gt;</p>
		<p>&lt;/head&gt;</p>
		<p>&lt;body style="margin:0;overflow-x:hidden;" scroll="no"&gt;<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br />&lt;script language="JavaScript" type="text/JavaScript"&gt;<br />function viewHtml(){<br /> $("result").innerHTML = '&lt;xmp&gt;' + $('container').outerHTML + '&lt;/xmp&gt;';<br />}<br />function setPagination() {<br /> var p = {};<br /> if(''!=$F('count')) {<br />  p['count'] = $F('count');<br /> }<br /> if(''!=$F('index')) {<br />  p['index'] = $F('index');<br /> }<br /> if(''!=$F('length')) {<br />  p['length'] = $F('length');<br /> }<br /> if(''!=$F('size')) {<br />  p['size'] = $F('size');<br /> }<br /> xpagination.set(p);<br />}<br />&lt;/script&gt;<br /> <br /> <br /> <br /> </p>
		<p>
				<br />&lt;table style="width:100%;height:100%;" cellpadding="0" cellspacing="0" border="0"&gt;<br />&lt;tr&gt;<br />&lt;td style="height:30;border-bottom:1 solid #CCCCCC;" colspan="2"&gt;<br /> &lt;strong&gt;XPagination&lt;/strong&gt;<br />&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;tr&gt;<br />&lt;td style="border-right:1 solid #CCCCCC;padding:2;" align="center"&gt;</p>
		<p> <br />  <br /> <br /> &lt;div id="container" style="height:22;width:100%;border:1px solid #0000FF;"&gt;&lt;/div&gt;</p>
		<p>  <br /> <br /> </p>
		<p> <br /> <br /> &lt;script language="JavaScript" type="text/JavaScript"&gt;<br /> &lt;!--<br /> function onPagination(p) {<br />  $('result').innerHTML = $H(p).toQueryString();<br /> }<br /> var context = {<br />  count: 101,<br />  index: 2,<br />  size: 10,<br />  length: 10,<br />  onPaginationHandler: onPagination<br /> };<br /> var xpagination = new XPagination();<br /> xpagination.create('container', context);<br /> //--&gt; <br /> &lt;/script&gt;</p>
		<p>
				<br />&lt;/td&gt;<br />&lt;td width="200" style="width:200;" align="center" valign="top"&gt;<br /> &lt;div class="box" style="padding:2;"&gt;  <br />  <br />  &lt;input type="button" class="bn" value="viewHtml" onclick="viewHtml();" /&gt;<br />  <br />  &lt;table style="width:100%;" cellpadding="0" cellspacing="0" border="0"&gt;<br />  &lt;form id="fom" name="fom" onsubmit="return false;"&gt;<br />  &lt;tr&gt;<br />  &lt;td class="f"&gt;count&lt;/td&gt;<br />  &lt;td&gt;&lt;input id="count" name="count" value="101" /&gt;&lt;/td&gt;<br />  &lt;/tr&gt;<br />  &lt;tr&gt;<br />  &lt;td class="f"&gt;index&lt;/td&gt;<br />  &lt;td&gt;&lt;input id="index" name="index" value="2" /&gt;&lt;/td&gt;<br />  &lt;/tr&gt;<br />  &lt;tr&gt;<br />  &lt;td class="f"&gt;length&lt;/td&gt;<br />  &lt;td&gt;&lt;input id="length" name="length" value="10" /&gt;&lt;/td&gt;<br />  &lt;/tr&gt;<br />  &lt;tr&gt;<br />  &lt;td class="f"&gt;size&lt;/td&gt;<br />  &lt;td&gt;&lt;input id="size" name="size" value="10" /&gt;&lt;/td&gt;<br />  &lt;/tr&gt;<br />  &lt;tr&gt;<br />  &lt;td colspan="2"&gt;&lt;input type="button" class="bn" value="xpagination.set" onclick="setPagination();" /&gt;&lt;/td&gt;<br />  &lt;/tr&gt;<br />  &lt;/form&gt;<br />  &lt;/table&gt;<br />  <br />  <br /> &lt;/div&gt;<br />&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;tr&gt;<br />&lt;td style="width:100%;height:30;border-top:1 solid #CCCCCC;" colspan="2"&gt;<br /> <br /> &lt;input type="button" class="bn" value="xpagination.set({count:0, index:1, length:0, size:10});" onclick="eval(this.value);" /&gt;<br /> &lt;input type="button" class="bn" value="xpagination.set({count:-1, index:2, length:10, size:10});" onclick="eval(this.value);" /&gt;<br /> &lt;input type="button" class="bn" value="xpagination.set({count:-1, index:1, length:10, size:10});" onclick="eval(this.value);" /&gt;<br /> <br />&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;tr&gt;<br />&lt;td style="width:100%;height:100;border-top:1 solid #CCCCCC;" colspan="2"&gt;</p>
		<p> &lt;table style="width:100%;height:100%;table-layout:fixed;" cellpadding="0" cellspacing="0" border="0"&gt;<br /> &lt;tr&gt;<br /> &lt;td&gt;<br />  &lt;div id="result" style="width:100%;height:100%;overflow:auto;padding:2;table-layout:fixed;"&gt;result&lt;/div&gt;<br /> &lt;/td&gt;<br /> &lt;/tr&gt;<br /> &lt;/table&gt;<br /> <br />&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;/table&gt;</p>
		<p>
				<br /> <br /> <br />&lt;/body&gt;<br />&lt;/html&gt;</p>
		<p> </p>
		<p> </p>
<img src ="http://www.blogjava.net/frogfool/aggbug/86788.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/frogfool/" target="_blank">frogfool</a> 2006-12-11 00:51 <a href="http://www.blogjava.net/frogfool/archive/2006/12/11/86788.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XList</title><link>http://www.blogjava.net/frogfool/archive/2006/12/11/86787.html</link><dc:creator>frogfool</dc:creator><author>frogfool</author><pubDate>Sun, 10 Dec 2006 16:49:00 GMT</pubDate><guid>http://www.blogjava.net/frogfool/archive/2006/12/11/86787.html</guid><wfw:comment>http://www.blogjava.net/frogfool/comments/86787.html</wfw:comment><comments>http://www.blogjava.net/frogfool/archive/2006/12/11/86787.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/frogfool/comments/commentRss/86787.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/frogfool/services/trackbacks/86787.html</trackback:ping><description><![CDATA[
		<p>
				<br />function XList() { <br /> this.container = null; //container div<br /> this.table = null ; //contain headTable &amp; bodyTable for table-layout:fixed;<br /> this.tableContainer = null; //for scroll table<br /> <br /> this.sequenced = true; // set sequence for rows or not<br /> this.colored = true; // set color for rows or not<br /> <br /> this.rowId = 'rowId';<br /> this.rowType = 'checkbox';<br /> //resize head column<br /> this.resizer = null;<br /> this.resizeable = true;<br /> this.resizing = false; // doing resize or not <br /> this.resizeClientX = 0;<br /> this.resizeOffsetWidth = 0;<br /> this.resizeHead = null;<br /> <br /> this.columns = null;<br /> <br /> this.rows = [];<br /> <br /> this.orderByColumn = null;</p>
		<p> this.headColumn = null;  // exchange column order div<br /> this.exchangeTag = null;  // exchange tag div<br /> this.exchangeCell = null; // current be change column cell<br /> <br /> this.rowSequence = 0;<br /> this.handler = null; //all handler<br /> this.columnLength = 0;<br /> <br /> this.onOrderByHandler = null;<br /> this.onRowClickHandler = null;<br /> this.onRowDblClickHandler = null;<br /> <br /> var the = this;<br />}</p>
		<p> </p>
		<p>XList.prototype.init = function(context) {<br /> this.container = $(context.container); <br /> this.sequenced = (context.sequenced!=undefined) ? context.sequenced : true;<br /> this.colored = (context.colored!=undefined) ? context.colored : true; <br /> this.rowId = (context.rowId) ? context.rowId : 'id';<br /> this.rowType = (context.rowType) ? context.rowType : 'checkbox';<br /> <br /> //this.columnExchangeable = (context.columnExchangeable!=undefined) ? context.columnExchangeable : true; <br /> this.onOrderByHandler = (context.onOrderByHandler) ? context.onOrderByHandler : null; <br /> this.onRowClickHandler = (context.onRowClickHandler) ? context.onRowClickHandler : null;<br /> this.onRowDblClickHandler = (context.onRowDblClickHandler) ? context.onRowDblClickHandler : null; <br /> context = null;<br />};</p>
		<p>XList.prototype.create = function(context, columns) {<br /> var the = this;<br /> <br /> this.init(context);<br /> <br /> //it must be 'table-layout:fixed;' for overflow auto;<br /> var s = []; <br /> s[s.length] = '\n&lt;table style="width:100%;height:100%;table-layout:fixed;" cellspacing="0" cellpadding="0" border="0"&gt;&lt;tr&gt;&lt;td&gt;';<br /> s[s.length] = '\n&lt;div id="x_list_table_container" style="height:100%;width:100%;overflow:auto;"&gt;';<br /> s[s.length] = '\n&lt;table id="x_list_table" style="table-layout:fixed;" cellspacing="0" cellpadding="0" border="0"&gt;';<br /> s[s.length] = '\n&lt;/table&gt;';<br /> s[s.length] = '\n&lt;/div&gt;&lt;div id="resizer" style="position:absolute;z-index:3;width:4;border:2 solid #000000;display:none;"&gt;&lt;/div&gt;';<br /> s[s.length] = '\n&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;';</p>
		<p> this.container.innerHTML = s.join('');<br /> s = null;<br /> <br /> this.tableContainer = this.container.all('x_list_table_container');<br /> this.table = this.container.all('x_list_table');<br /> this.resizer = this.container.all('resizer');<br /> <br /> this.resizer.onmouseup = function() {<br />  if(the.resizing &amp;&amp; null!=the.resizeHead) {<br />   var newWidth = parseInt(the.resizeHead.offsetWidth) + (parseInt(event.clientX) - parseInt(the.resizeClientX));<br />   window.status = newWidth;<br />   if(newWidth &lt; 5){<br />    newWidth = 5;<br />   }<br />   var head = the.resizeHead;<br />   the.setHeadWidth(head, newWidth);<br />   this.style.display = 'none';<br />   the.resizing = false;<br />   the.resizeHead = null;<br />   the.table.style.cursor = '';<br />   <br />  }<br /> };<br /> <br /> if(columns) {<br />  this.setColumns(columns);<br /> }<br />};</p>
		<p>XList.prototype.isRowHandle = function() {<br /> return ('checkbox'==this.rowType) || ('radio'==this.rowType);<br />}</p>
		<p>XList.prototype.setColumns = function(columns) {<br /> var the = this;</p>
		<p> this.columnLength = 0;<br /> <br /> this.columns = columns;<br /> <br /> var tBody, tRow, tHead;<br /> <br /> tBody = this.table.tBodies[0];<br /> tRow  = document.createElement('tr');</p>
		<p> tRow.className = 'x_list_head_row';<br /> tBody.appendChild(tRow);<br /> <br /> //<br /> if(this.isRowHandle()) {<br />  tHead = document.createElement('th');<br />  tRow.appendChild(tHead);<br />  <br />  tHead.className = 'x_list_head_handle';<br />  if('checkbox' == this.rowType) {<br />   tHead.title = 'check/uncheck all';<br />  } else if('radio' == this.rowType) {<br />   tHead.title = 'uncheck all';<br />  }<br />  <br />  var tInput = document.createElement('input');<br />  tInput.id = this.rowId + '_all'  <br />  tInput.name = tInput.id;<br />  tInput.type = this.rowType;<br />  <br />  // closure memory leak here !<br />  if('radio' == this.rowType) {<br />   tInput.onclick = function() {<br />    XCheck.uncheckAll(the.rowId);<br />    tInput.checked = false;<br />    the.color();<br />   } <br />  } else {<br />   tInput.onclick = function() {<br />    XCheck.checkAll(the.rowId);<br />    the.color();<br />   }<br />  }<br />  tHead.appendChild(tInput);  <br /> }<br /> <br /> //sequence<br /> if(this.sequenced) { <br />  tHead = document.createElement('th');<br />  tHead.className = 'x_list_head_handle';<br />  tHead.innerHTML = '&amp;nbsp;#&amp;nbsp;';<br />  tRow.appendChild(tHead);<br /> }<br /> <br /> //header columns <br /> var width = '';<br /> var name = '';<br /> var title = '';<br /> var text = '';<br /> var column = null;<br /> <br /> for(var i = 0; i &lt; this.columns.length; i++) {<br />  column = this.columns[i];<br />  <br />  width = (column.width) ? (column.width) : '100';<br />  name = (column.name) ? (column.name) : '';<br />  <br />  text = column.text;<br />  <br />  title = (column.title) ? (column.title) : column.text;<br />  <br />  tHead = document.createElement('th');<br />  tHead.className = 'x_list_head_cell';<br />  tHead.id = name;<br />  tHead.name = name;<br />  tHead.orderBy = '';<br />  //tHead.innerHTML = '&lt;div style="overflow: hidden; height: 18px; width:'+width+';"&gt;' + text + "&lt;/div&gt;";<br />  tHead.style.width = width;<br />  if(null!=name &amp;&amp; ''!=name &amp;&amp; this.onOrderByHandler) {<br />   tHead.style.textDecoration = 'underline';<br />  }<br />  //tHead.width = width;<br />  //tHead.innerHTML = '&lt;span style="padding:0;overflow:hidden;height:18px;width:'+width+';"&gt;' + text + "&lt;/span&gt;";<br />  tHead.innerHTML = text;<br />  <br />  <br />  <br />   <br />  // tHead.style.cursor = 'hand';<br /> <br />  tHead.onclick = function() {<br />   var src = window.event.srcElement;//maybe &lt;html /&gt; in head<br />   window.status = parseInt(src.offsetWidth) - parseInt(event.offsetX);<br />   if(parseInt(src.offsetWidth) - parseInt(event.offsetX) &lt;= 3) {<br />    <br />   } else {<br />    if(the.resizing &amp;&amp; null!=the.resizeHead) {<br />    } else {<br />     if(the.onOrderByHandler &amp;&amp; null!=name &amp;&amp; ''!=name) {<br />      var orderBy = (this.orderBy == 'asc') ? 'desc' : 'asc';   <br />      if(null!=the.orderByColumn) {<br />       if(the.orderByColumn != this) {  <br />        the.orderByColumn.className = 'x_list_head_cell';      <br />        the.orderByColumn = this;<br />       }<br />      } else {<br />       the.orderByColumn = this;<br />      }<br />      this.className = 'x_list_head_' + orderBy;     <br />      this.orderBy = orderBy;<br />      (the.onOrderByHandler || Prototype.emptyFunction)({name:this.name, orderBy:orderBy});<br />     }<br />    }<br />   }    <br />  };<br />  <br />  tHead.onmouseover = function() {<br />   var src = window.event.srcElement;   <br />   src.style.backgroundColor = '#FFFFFF';//'#F4F7F9';<br />   src.style.color = '#0000FF';<br />   var src = window.event.srcElement; <br />  };<br />  <br />  tHead.onmouseout = function() {<br />   var src = window.event.srcElement;    <br />   src.style.backgroundColor = '#E9F0F4';<br />   src.style.color = '07215F';<br />   src.style.borderColor = 'threedhighlight #688293 #688293 threedhighlight';<br />  };<br />  <br />  tHead.onmousedown = function() {<br />   var src = window.event.srcElement;<br />   if(parseInt(src.offsetWidth) - parseInt(event.offsetX) &lt;= 3) {<br />    the.resizing = true;<br />    the.resizeClientX = event.clientX;<br />    <br />    var p = Position.page(src);<br />    the.resizeHead = src;<br />    the.resizer.style.height = the.tableContainer.offsetHeight;<br />    the.resizer.style.top = parseInt(p[1]) + 2;<br />    the.resizer.style.left = parseInt(p[0]) + parseInt(src.offsetWidth);<br />    the.resizer.style.display = 'block';<br />    the.resizeOffsetWidth = the.resizer.style.left;//head.offsetWidth;<br />   } else {<br />    src.style.backgroundColor = '#D4DBDF';<br />    src.style.borderColor = 'black #CCCCCC #CCCCCC black';<br />   }<br />  };<br />  <br />  tHead.onmouseup = function() {<br />   <br />   var src = window.event.srcElement;<br />   src.style.backgroundColor = '#FFFFFF';<br />   src.style.borderColor = 'threedhighlight #688293 #688293 threedhighlight';<br />  };<br />  <br />  tHead.onmousemove = function() {<br />   if(the.resizing &amp;&amp; null!=the.resizeHead) {<br />    the.resizer.style.left = parseInt(the.resizeOffsetWidth) + (parseInt(event.clientX) - parseInt(the.resizeClientX));<br />    return;<br />   }<br />   <br />   var src = window.event.srcElement;<br />   if(parseInt(src.offsetWidth) - parseInt(event.offsetX) &lt;= 3) {<br />    the.table.style.cursor = 'e-resize';<br />   } else {<br />    the.table.style.cursor = '';<br />   } <br />  };<br />  <br />    <br />  <br />  tRow.appendChild(tHead);<br /> <br />  this.columnLength++;<br /> }<br />}</p>
		<p>
				<br />XList.prototype.setHeadWidth = function(head, newWidth) {<br /> head.style.width = newWidth;<br />/*<br /> if(this.table.rows.length &gt; 0) {<br />  var tRow = null;<br />  var index = this.table.rows[0].indexOf(head);<br />  for(var i = 1; i &lt; this.table.rows.length; i++) {<br />   tRow = this.table.rows[i];   <br />   cells[index].style.width = newWidth;<br />  }<br /> } */<br />}</p>
		<p> </p>
		<p>var M_LIST_ROW_HIGHLIGHT = '#D8F3FF';<br />var M_LIST_ROW_LAST_HIGHLIGHT = '#FFFF00';<br />var M_LIST_ROW_COLOR = '';<br />var M_LIST_ROW_OVER = '#FFFFFF';</p>
		<p>XList.prototype._i = function(rows) {<br /> var i = 0; <br /> if('empty'!=this.rowType) {<br />  i++;<br /> } <br /> if(this.sequenced) { <br />  i++;<br /> }<br /> return i;<br />}</p>
		<p>XList.prototype.addRows = function(rows) {<br /> var scrollBottom = ('undefined'==typeof(scrollBottom)?false:scrollBottom)<br /> if(this.size()&gt;0) {<br />  //scrollBottom = true;<br /> } <br /> for (var i = 0; i &lt; rows.length; i++) {  <br />  var result = this._addRow(rows[i], scrollBottom);<br />  if (result) { return result; }<br /> }<br />}</p>
		<p>XList.prototype.addRow = function(pRow) {<br /> this._addRow(pRow, true);<br />}<br />XList.prototype._addRow = function(pRow, scrollBottom) {<br /> var the = this;<br /> <br /> var tBody, tRow, tCell, i, len;<br /> <br /> /* Validate column count */<br /> //if (aRowData.length != this._cols) { return 1; }<br /> //var rowSequence = this.rowSequence++;<br /> var seq = this.size() + 1;<br /> <br /> /* Construct Body Row */ <br /> <br /> tBody = this.table.tBodies[0];<br /> tRow  = document.createElement('tr'); <br /> tRow.row = pRow;<br /> tRow.row.checked = (tRow.row.checked==true); <br /> pRow.colored = false;<br /> <br /> if(this.colored) {   <br />  if(!pRow.bgColor) {<br />   pRow.bgColor = (seq % 2 ==1 ) ? '#FFFFFF' : '#F4F9FB';<br />  } else {<br />   pRow.colored = true;<br />  }<br /> } else {<br />  pRow.bgColor = '#FFFFFF';<br /> } <br /> <br /> if(pRow.checked) {<br />  <br />  tRow.style.backgroundColor = M_LIST_ROW_HIGHLIGHT;<br /> } else {<br />  tRow.style.backgroundColor = pRow.bgColor;<br /> }<br /> <br /> var tInput = null;<br /> //check <br /> if('empty'!=this.rowType) {<br />  tCell = document.createElement('td');<br />  tCell.className = 'x_list_body_handle';<br />  <br />  tInput = document.createElement('input');<br />  tInput.type = this.rowType;<br />  tInput.id = this.rowId;  <br />  tInput.name = this.rowId;<br />  tInput.value = pRow.id;<br />  <br />  tCell.appendChild(tInput);<br />  tRow.appendChild(tCell);<br />  //tInput.focus();<br />  <br /> }<br /> //sequenced<br /> if(this.sequenced) {<br />  tCell = document.createElement('td');<br />  tCell.className = 'x_list_body_handle';   <br />  tCell.appendChild(document.createTextNode(seq));<br />  tRow.appendChild(tCell);<br /> }<br /> var text = null;<br /> if(pRow &amp;&amp; pRow.data) {<br />  for (var i = 0; i &lt; this.columnLength &amp;&amp; i &lt; pRow.data.length; i++) {<br />   tCell = document.createElement('td');<br />   tCell.className = 'x_list_body_cell';<br />   tCell.style.width = this.columns[i].width;<br />   //tCell.appendChild(document.createTextNode(row.data[i]));<br />   if(''!=pRow.data[i]) {<br />    text = pRow.data[i];<br />   } else {<br />    text = '&amp;nbsp;';<br />   }  <br />   tCell.innerHTML = '&lt;div style="width: '+this.columns[i].width+'; height: 18px; white-space: nowrap; padding-right: 20px;"&gt;' + text + '&lt;/div&gt;';<br />   tCell.title = text;//.escapeHTML();    <br />   tRow.appendChild(tCell);<br />  }<br /> }<br /> tBody.appendChild(tRow);<br /> <br /> if(pRow.checked) {<br />  tInput.checked = true; <br />  tRow.row.checked = true;<br /> }<br /> <br /> //event bind<br /> <br /> tRow.onclick = function() {  <br />  if(tInput) {<br />   if('radio'==the.rowType) {<br />    XLister.uncheckAll(the.rowId);<br />   }<br />   <br />   // get column index, starting from zero.<br />   var src = event.srcElement;<br />   var colIndex = 0;<br />   <br />   if('td' == src.tagName.toLowerCase())<br />   {<br />    while(src.previousSibling)<br />    {<br />     if('td' == src.previousSibling.tagName.toLowerCase())<br />     {<br />      src = src.previousSibling;<br />      colIndex ++;<br />     }else<br />     {<br />      continue;     <br />     }<br />    }<br />   }<br />   <br />   // return false means that the row checkBox does not need to change status.<br />   if(false != (the.onRowClickHandler || Prototype.emptyFunction)({rowId:tInput.value, checked:!tRow.row.checked, colIndex:colIndex, row:tRow}))<br />   {<br />    tRow.row.checked = !tRow.row.checked;<br />    tInput.checked = tRow.row.checked;   <br />   }<br />  <br />   the.color();<br />   if(tInput.checked) {<br />    M_LIST_ROW_COLOR = M_LIST_ROW_HIGHLIGHT;<br />    tRow.style.backgroundColor = M_LIST_ROW_LAST_HIGHLIGHT;<br />   } else {<br />    M_LIST_ROW_COLOR = tRow.row.bgColor;<br />   }<br />  }<br /> }<br /> <br /> tRow.ondblclick = function() {<br />  if(the.onRowDblClickHandler) {<br />   (the.onRowDblClickHandler || Prototype.emptyFunction)({rowId:tInput.value, checked:!tRow.row.checked, row:tRow}); <br />  }  <br /> } <br /> <br /> <br /> //scroll down when add row<br /> if(scrollBottom) {<br />  this.tableContainer.scrollTop = this.tableContainer.scrollTop + this.size() * 22;<br /> } <br />};</p>
		<p>XList.prototype.color = function() {<br /> if(this.size()&gt;0) {<br />  var bgColor = null;<br />  var rows = this.table.rows;<br />  var tRow = null;<br />  var row = null;<br />  var handler = null;<br />  for(var i = 1; i&lt;rows.length; i++) {<br />   tRow = rows[i];<br />   handler = tRow.all(this.rowId);<br />   if(handler) {   <br />    row = tRow.row;<br />    row.checked = handler.checked;<br />    if(!row.colored) {<br />     row.bgColor = (i % 2 ==1 ) ? '#FFFFFF' : '#F4F9FB';<br />    } <br />    if(row.checked) {<br />     tRow.style.backgroundColor = M_LIST_ROW_HIGHLIGHT;<br />    } else {<br />     tRow.style.backgroundColor = row.bgColor;<br />    }<br />   }<br />  }  <br /> }<br />};<br />//remove selected rows<br />XList.prototype.remove = function() {<br /> var indexs = new Array();<br /> var tRow = null;<br /> for(var i=this.table.rows.length-1; i&gt;0; i--) {<br />  tRow = this.table.rows[i];<br />  rowId = tRow.all(this.rowId);<br />  if(true == rowId.checked) {<br />   indexs[indexs.length] = i;<br />   //alert(i);<br />  }<br /> } <br /> if(indexs.length&gt;0) {<br />  for(var i=0; i&lt;indexs.length; i++) {<br />   this.table.deleteRow(indexs[i]);<br />   this.length<br />  }<br /> }<br /> if(this.size()==0) {<br />  this.container.all(this.rowId + '_all').checked = false;<br /> } else {<br />  this.refresh(); <br /> }<br />}</p>
		<p>XList.prototype.value = function() {<br /> var values = new Array();<br /> if(this.size() &gt; 1) {  <br />  var rowIds = this.container.all(this.rowId);  <br />  if(rowIds &amp;&amp; rowIds.length) {<br />   for(var i=rowIds.length-1; i&gt;=0; i--) {    <br />    if(true == rowIds[i].checked) {<br />     values[values.length] = rowIds[i].value;<br />    }<br />   }<br />  } <br /> } else if(this.size() == 1) {<br />  var rowIds = this.container.all(this.rowId);<br />  if(true == rowIds.checked) {<br />   values[values.length] = rowIds.value;<br />  }<br /> }<br /> <br /> return values;<br />}</p>
		<p>// get the selected row indices.<br />XList.prototype.rowIndices = function() {<br /> var rows = new Array();<br /> if(this.size() &gt; 1) {  <br />  var rowIds = this.container.all(this.rowId);  <br />  if(rowIds &amp;&amp; rowIds.length) {<br />   for(var i=rowIds.length-1; i&gt;=0; i--) {    <br />    if(true == rowIds[i].checked) {<br />     rows[rows.length] = i;<br />    }<br />   }<br />  } <br /> } else if(this.size() == 1) {<br />  var rowIds = this.container.all(this.rowId);<br />  if(true == rowIds.checked) {<br />   rows[rows.length] = 0;<br />  }<br /> }<br /> <br /> return rows;<br />}</p>
		<p>
				<br />XList.prototype.values = function() {<br /> var values = new Array();<br /> if(this.size()&gt;1) { <br />  var rowIds = this.container.all(this.rowId);<br />  if(rowIds &amp;&amp; rowIds.length) {<br />   for(var i=rowIds.length-1; i&gt;=0; i--) {<br />    tRowId = rowIds[i];<br />    values[values.length] = tRowId.value;<br />   }<br />  }<br /> } else if(this.size()==1) {<br />  var rowIds = this.container.all(this.rowId);<br />  values[values.length] = rowIds.value;<br /> }<br /> return values;<br />}</p>
		<p>
				<br />XList.prototype.refresh = function() {<br /> if(this.sequenced) {  <br />  var index = 0;<br />  if('empty'!=this.rowType) {<br />   index++;<br />  }<br />  <br />  if(this.table.rows.length &gt; 0) {<br />   var tRow = null;<br />   for(var i=1; i&lt;this.table.rows.length; i++) {<br />    tRow = this.table.rows[i];<br />    cells = tRow.cells;<br />    cells[index].innerHTML = i;<br />   }<br />  }<br /> }<br /> this.color();<br />}</p>
		<p> </p>
		<p>XList.prototype.clear = function() { <br /> for(var i = this.size(); i &gt; 0; i--){<br />  this.table.deleteRow(i);<br /> }<br /> if(this.container.all(this.rowId + '_all')) {<br />  this.container.all(this.rowId + '_all').checked = false;<br /> }<br />}</p>
		<p>XList.prototype.size = function() { <br /> return this.table.rows.length - 1;<br />}<br />XList.prototype.orderBy = function() {<br /> var name = '';<br /> var orderBy = '';<br /> if(null!=this.orderByColumn) {<br />  name = this.orderByColumn.name;<br />  orderBy = this.orderByColumn.orderBy;<br /> }<br /> return {name:name, orderBy:orderBy};<br />}</p>
		<p>XList.prototype.cell = function(rowIndex, colIndex) {<br /> if(rowIndex &lt; this.size() &amp;&amp; colIndex &lt; this.columnLength) {<br />  var tRow = this.table.rows[rowIndex+1];<br />  var cells = tRow.cells;  <br />  //alert('this._i() + colIndex'+ (this._i() + colIndex) );<br />  return cells[this._i() + colIndex];<br /> }<br /> return null;<br />}</p>
		<p>XList.prototype.serialize = function() {<br /> if('empty'!=this.rowType) {<br />  var value = this.value();<br />  var s = new Array();<br />  for(var i=0; i&lt;value.length; i++) {<br />   s[s.length] = this.rowId + '=' + value[i];<br />  }<br />  return s.join('&amp;');<br /> }<br /> return '';<br />}<br />XList.prototype.serializeAll = function() {<br /> if('empty'!=this.rowType) {<br />  var value = this.values();<br />  var s = new Array();<br />  for(var i=0; i&lt;value.length; i++) {<br />   s[s.length] = this.rowId + '=' + value[i];<br />  }<br />  return s.join('&amp;');<br /> }<br /> return '';<br />}</p>
		<p>XList.prototype.setOrderByContext = function(param) {<br /> if(null!=param) {<br />  if(null!=param.orderByName) {<br />   var head = this.table.rows[0];<br />   var column = null; <br />   for(var i=0; i&lt;head.cells.length; i++) {<br />    column = head.cells[i];<br />    if(column.name==param.orderByName) {<br />     this.orderByColumn = column;<br />     this.orderByColumn.name = param.orderByName;<br />     this.orderByColumn.orderBy = param.orderByType;<br />//     column.childNodes[0].innerHTML = this.orderByColumnWithinInnerHTML + '&lt;span class="x_list_order_' + param.orderByType + '"&gt;&amp;nbsp;&lt;/span&gt;'<br />     break;<br />    }<br />   }<br />  }<br /> }<br />};</p>
		<p>
				<br />XList.prototype.dispose = function() { <br /> this.container = null; //container div<br /> this.table = null ;     //contain headTable &amp; bodyTable for table-layout:fixed;<br /> this.tableContainer = null;<br /> this.sequenced = null;<br />     <br /> this.colored = null<br /> this.rowId = null<br /> this.rowType = null<br /> this.resizeable = null</p>
		<p> this.columns = null;<br /> <br /> while(this.rows.pop());<br /> this.rows = null;<br /> <br /> this.orderByColumn = null;<br /> this.orderByColumnInnerHTML = null;<br /> <br /> this.headColumn = null;  // exchange column order div<br /> this.exchangeTag = null;  // exchange tag div<br /> this.exchangeCell = null; // current be change column cell<br /> <br /> this.rowSequence = 0;<br /> this.handler = null; //all handler<br /> this.columnLength = 0;<br /> <br /> this.onRowClickHandler = null;<br /> this.onOrderByHandler = null;<br /> var the = null;<br /> this.columnExchangeable = null;<br /> this.onRowClickHandler = null;<br /> this.onOrderByHandler = null;<br /> this.onRowDblClickHandler = null;<br /> this.table = null;<br /> this.tableContainer = null;<br />}<br /><br /><br /><br /><br /><br /><br /><br /><br />.x_list_container { <br /> width:100%;<br /> height:100%;<br /> overflow:auto; <br />}</p>
		<p>.x_list_head_row {<br /> height:22;<br /> /*position:relative;<br /> top:expression(this.offsetParent.scrollTop); */<br />}</p>
		<p>.x_list_head_handle { <br /> width:22;<br /> height:22;<br /> color:#3D4A69;<br /> font-size:12;<br /> font-weight:bold;<br /> text-align:center;<br /> background-color:#E9F0F4;<br /> font-family:Verdana, Simsun;<br /> border:1 solid;<br /> border-color:threedhighlight #688293 #688293 threedhighlight;<br />}</p>
		<p> </p>
		<p>.x_list_head_asc  ,<br />.x_list_head_desc ,<br />.x_list_head_cell {<br /> border:1 solid;<br /> border-color:threedhighlight #688293 #688293 threedhighlight;<br /> height:22;<br /> color:#07215F;<br /> font-size:12;<br /> overflow:visible;<br /> word-wrap:normal; <br /> white-space:nowrap;<br /> word-break:keep-all;<br /> text-overflow:ellipsis;<br /> background-color:#E9F0F4; <br /> font-family:Verdana, Simsun;<br /> <br />}</p>
		<p>.x_list_head_asc  { background:url(../image/xlist/x_icon_asc.gif  ) no-repeat center right; }<br />.x_list_head_desc { background:url(../image/xlist/x_icon_desc.gif ) no-repeat center right; }</p>
		<p> </p>
		<p>
				<br />.x_list_head_cell_over {<br /> border:1 solid;<br /> /*border-color:threedhighlight #CCCCCC #CCCCCC threedhighlight;*/<br /> border-color:threedhighlight #688293 #688293 threedhighlight;<br /> background-color:#F4F7F9; <br /> height:22;<br /> color:#07215F;<br /> font-size:12;<br /> overflow:visible;<br /> word-wrap:normal; <br /> white-space:nowrap;<br /> word-break:keep-all;<br /> text-overflow:ellipsis;<br /> font-family:Verdana, Simsun;<br />}<br />.x_list_head_cell_down {<br /> border:1 solid;<br /> border-color:#CCCCCC threedhighlight threedhighlight #CCCCCC;<br /> background-color:#D4DBDF;<br /> height:22;<br /> color:#07215F;<br /> font-size:12;<br /> overflow:visible;<br /> word-wrap:normal; <br /> white-space:nowrap;<br /> word-break:keep-all;<br /> text-overflow:ellipsis;<br /> font-family:Verdana, Simsun;<br />}</p>
		<p>
				<br />.x_list_body_handle { <br /> width:22;<br /> font-size:12;<br /> overflow:hidden; <br /> text-align:center; <br /> word-wrap:normal; <br /> word-break:keep-all;<br /> font-family:Verdana, Simsun;<br />}</p>
		<p>.x_list_body_cell {<br /> height:22; <br /> font-size:12;<br /> padding-top:2;<br /> padding-left:2; <br /> word-wrap:normal; <br /> white-space:nowrap;<br /> word-break:keep-all;<br /> text-overflow:ellipsis;<br /> overflow:visible;<br /> font-family:Verdana, Simsun;<br />}</p>
		<p> </p>
		<p>
				<br />var XCheck = {<br /> checkAll: function(name) {<br />  var o = document.getElementsByName(name);<br />  var l = o.length;<br />  for (var i = 0; i &lt; l; i++)<br />     o[i].checked = window.event.srcElement.checked;<br /> },<br /> checkItem: function(name) {<br />  var e = window.event.srcElement;<br />    var o = document.getElementById(name);<br />    if (e.checked) {<br />   var items = document.getElementsByName(e.name);<br />   o.checked = true;<br />   var l = items.length;<br />      for (var i = 0; i &lt; l; i++) {<br />    if (!items[i].checked) {<br />     o.checked = false; <br />     break;<br />    }<br />      }<br />    } else {<br />   o.checked = false;<br />  }<br /> },<br /> uncheckAll: function (name) {<br />  var o = document.getElementsByName(name);<br />  var l = o.length;<br />  for (var i=0; i &lt; l; i++)<br />     o[i].checked = false;<br /> }<br />};</p>
		<p>
				<br />var XOption = {<br /> selectAll: function(name) {<br />  var o = document.getElementsByName(name);<br />  var l = o.length;<br />  for (var i = 0; i &lt; l; i++)<br />     o[i].checked = window.event.srcElement.checked;<br /> },<br /> unSelectAll: function(name) {<br />  var e = window.event.srcElement;<br />    var o = document.getElementById(name);<br />    if (e.checked) {<br />   var items = document.getElementsByName(e.name);<br />   o.checked = true;<br />   var l = items.length;<br />      for (var i = 0; i &lt; l; i++) {<br />    if (!items[i].checked) {<br />     o.checked = false; <br />     break;<br />    }<br />      }<br />    } else {<br />   o.checked = false;<br />  }<br /> },<br /> append: function (name) {<br />  var o = document.getElementsByName(name);<br />  var l = o.length;<br />  for (var i=0; i &lt; l; i++)<br />     o[i].checked = false;<br /> },<br /> remove: function (name) {<br />  var o = document.getElementsByName(name);<br />  var l = o.length;<br />  for (var i=0; i &lt; l; i++)<br />     o[i].checked = false;<br /> }<br />};<br /><br /><br /><br /><br /><br /><br /><br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;XList&lt;/title&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;&lt;/meta&gt;</p>
		<p>&lt;link href="resource.prototype.css" rel="stylesheet" type="text/css"&gt;&lt;/link&gt;<br />&lt;link href="../theme/default/style/index.css" rel="stylesheet" type="text/css"&gt;&lt;/link&gt;<br />&lt;script language="JavaScript" type="text/JavaScript" src="../../common/script/prototype.js"&gt;&lt;/script&gt;<br />&lt;script language="JavaScript" type="text/JavaScript" src="../../common/script/commons.js"&gt;&lt;/script&gt;<br />&lt;script language="JavaScript" type="text/JavaScript" src="../script/xlist.js"&gt;&lt;/script&gt;</p>
		<p>&lt;/head&gt; </p>
		<p>&lt;body style="margin:0;overflow-x:hidden;" scroll="no"&gt;</p>
		<p> </p>
		<p> </p>
		<p>
				<br />&lt;script language="JavaScript" type="text/JavaScript"&gt;<br />&lt;!--<br />function viewHtml(){<br /> $("result").innerHTML = '&lt;xmp&gt;' + $('container').outerHTML + '&lt;/xmp&gt;';<br />}</p>
		<p>function listCell(r, c) {<br /> var cell = list.cell(r , c); <br /> if(cell) {<br />  $('result').innerHTML = 'cell.innerHTML = ' + cell.innerHTML;<br /> } else {<br />  $('result').innerHTML = 'cell not found';<br /> }<br /> <br />}<br />var row = {id:'id_1', data:['id_1','department1department1department1department1department1','name','sex','birthday','married','salar','title']};<br />var row2 = {id:'id_2', data:['id_2','department1department1department1department1department1','name','sex','birthday','married','salar','title']};</p>
		<p>
				<br />var rows = [<br /> {id:'id_10', checked:false, data:['id_10','department1','name','sex','birthday','married','salar','title']},//&lt;input /&gt;<br /> {id:'id_20', checked:false, data:['id_20','department2','name','sex','birthday','married','salar','title']},<br /> {id:'id_30', checked:false, data:['id_30','department3','name','sex','birthday','married','salar','title']},<br /> {id:'id_40', checked:true, data:['id_40','department4','name','sex','birthday','married','salar','title']},<br /> {id:'id_50', checked:false, bgColor:'#0000FF', data:['id_50','department5','name','sex','birthday','married','salar','title']},<br /> {id:'id_60', checked:true, bgColor:'#0000FF', data:['id_60','department6','name','sex','birthday','married','salar','title']}<br />];</p>
		<p>
				<br />function resizeContainer() {<br /> if(parseInt($('containerTd').style.width) == 480) {<br />  $('containerTd').style.width = 560;<br />  $('containerTd').style.height = 360;<br /> } else { <br />  $('containerTd').style.width = 480;<br />  $('containerTd').style.height = 270;<br /> }<br />}<br />function showResult(the, r) {<br /> $('result').innerHTML = the.value + ':&lt;br /&gt;' + r;<br />}<br />//--&gt;<br />&lt;/script&gt;</p>
		<p> </p>
		<p> </p>
		<p> </p>
		<p> </p>
		<p> </p>
		<p> </p>
		<p>
				<br />&lt;table style="width:100%;height:100%;" cellpadding="0" cellspacing="0" border="0"&gt;<br />&lt;tr&gt;<br />&lt;td style="height:30;border-bottom:1 solid #CCCCCC;" colspan="2"&gt;<br /> &lt;strong&gt;XList&lt;/strong&gt;<br />&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;tr&gt;<br />&lt;td style="border-right:1 solid #CCCCCC;padding:2;" align="center"&gt;</p>
		<p> <br />  <br /> &lt;table id="containerTd" style="width:480;height:270;border:0px solid #FF0000;" cellspacing="0" cellpadding="0" border="1" align="center"&gt;<br /> &lt;tr&gt;<br /> &lt;td style="width:100%;height:100%;"&gt;<br />  &lt;div id="container" style="height:100%;width:100%;border:1px solid #0000FF;"&gt;&lt;/div&gt;<br /> &lt;/td&gt;<br /> &lt;td style="width:1;height:100%;"&gt;<br />  1<br /> &lt;/td&gt;<br /> &lt;/tr&gt;<br /> &lt;/table&gt;<br />  <br /> <br />  <br /> <br /> &lt;script language="JavaScript" type="text/JavaScript"&gt;<br /> &lt;!--<br /> var list = new XList();<br /> var columns = [<br />  {name:'id',text:'id',width:'40'},<br />  {name:'department',text:'department',width:'200'},//&lt;input /&gt;<br />  {name:'user.name',text:'&lt;span class="ss"&gt;&lt;/span&gt;name',width:'100'},<br />  {name:'',text:'sex',width:'200'},<br />  {name:'user.birthday',text:'birthday',width:'200'},<br />  {name:'user.married',text:'married',width:'100'},<br />  {name:'user.salar',text:'salar',width:'200'},<br />  {name:'user.title', text:'title', width:'200'}<br /> ];<br /> var columns2 = [ <br />  {name:'id',text:'id',width:'10%'},<br />  {name:'user.birthday',text:'birthday',width:'10%'},<br />  {name:'user.married',text:'married',width:'10%'},<br />  {name:'user.salar',text:'salar',width:'10%'},<br />  {name:'user.title', text:'title', width:'10%'},  <br />  {name:'department',text:'department',width:'10%'},//&lt;input /&gt;<br />  {name:'user.name',text:'&lt;span class="ss"&gt;&lt;/span&gt;name',width:'30%'},<br />  {name:'22',text:'sex',width:'10%'}<br /> ]; <br /> var columns3 = [ <br />  {name:'user.birthday',text:'birthday',width:'10%'},<br />  {name:'user.married',text:'married',width:'10%'},<br />  {name:'user.salar',text:'salar',width:'10%'},<br />  {name:'user.title', text:'title', width:'10%'},<br />  {name:'id',text:'id',width:'10%'},<br />  {name:'department',text:'department',width:'10%'},//&lt;input /&gt;<br />  {name:'user.name',text:'&lt;span class="ss"&gt;&lt;/span&gt;name',width:'30%'},<br />  {name:'',text:'sex',width:'10%'}<br /> ]; <br /> var context = {<br />  container:'container', <br />  sequence:true, <br />  rowType:'checkbox', <br />  rowId:'testId', <br />  columnExchangeable:true, <br />  onOrderByHandler:onOrderBy,<br />  onRowClickHandler:onRowClick,<br />  onRowDblClickHandler:onRowDblClick<br /> };<br /> function onRowClick(param) {<br />  $('result').innerHTML = 'param.rowId=' + param.rowId + '&lt;br /&gt;param.checked=' + param.checked + '&lt;br /&gt;param.colIndex=' + param.colIndex + '&lt;br /&gt;param.row=' + param.row;<br />  for(var i=0; i&lt;param.row.cells.length; i++) {<br />   $('result').innerHTML += '&lt;br /&gt;' + param.row.cells[i].innerHTML;<br />  }  <br /> }<br /> function onRowDblClick(param) {<br />  $('result').innerHTML = 'onRowDblClick:&lt;br /&gt;param.rowId=' + param.rowId + '&lt;br /&gt;param.checked=' + param.checked + '&lt;br /&gt;param.row=' + param.row;<br />  for(var i=0; i&lt;param.row.cells.length; i++) {<br />   $('result').innerHTML += '&lt;br /&gt;' + param.row.cells[i].innerHTML;<br />  }  <br /> }<br /> function onOrderBy(param) {<br />  $('result').innerHTML = 'param.name=' + param.name + '&lt;br /&gt;param.orderBy=' + param.orderBy;<br /> }<br /> list.create(context, columns);<br /> //--&gt;<br /> &lt;/script&gt;</p>
		<p>
				<br />&lt;/td&gt;<br />&lt;td style="width:200;" align="center" valign="top"&gt;<br /> &lt;div class="box" style="padding:2;"&gt;<br /> <br />  &lt;input class="bn" type="button" value="resize  改变大小" onclick="resizeContainer();" /&gt;<br />  &lt;input class="bn" type="button" value="addRow  添加一行" onclick="list.addRow(row, false);" /&gt;<br />  &lt;input class="bn" type="button" value="addRow2  添加另一行" onclick="list.addRow(row2, false);" /&gt;<br />  &lt;input class="bn" type="button" value="addRows  添加多行" onclick="list.addRows(rows);" /&gt;<br />  &lt;input class="bn" type="button" value="remove  删除选中记录" onclick="list.remove();" /&gt;<br />  &lt;input class="bn" type="button" value="clear  删除全部记录" onclick="list.clear();" /&gt;<br />  &lt;input class="bn" type="button" value="size  记录行数" onclick="showResult(this, 'size=' + list.size());" /&gt;<br />  &lt;input class="bn" type="button" value="value  选中记录值" onclick="showResult(this, 'value.length=' + list.value().length + '\nvalue=' + list.value());" /&gt;<br />  &lt;input class="bn" type="button" value="valueAll  全部记录值" onclick="showResult(this, 'values.length=' + list.values().length + '\nvalues=' + list.values());" /&gt;<br />  &lt;input class="bn" type="button" value="orderBy  列表排序参数" onclick="showResult(this, 'orderBy.name=' + list.orderBy().name + '\norderBy.orderBy=' + list.orderBy().orderBy);" /&gt;<br />  &lt;input class="bn" type="button" value="cell 2 , 0 定位单元格" onclick="listCell(2,0);" /&gt;<br />  &lt;input class="bn" type="button" value="cell 2 , 1 定位单元格" onclick="listCell(2,1);" /&gt;<br />  &lt;input class="bn" type="button" value="serialize 序列化选中记录值" onclick="showResult(this, 'serialize=' + list.serialize());" /&gt;<br />  &lt;input class="bn" type="button" value="serializeAll 序列化全部记录值" onclick="showResult(this, 'serialize=' + list.serialize());" /&gt;<br />  &lt;input class="bn" type="button" value="setColumns 重设置列头" onclick="list.setColumns(columns2);" /&gt;  <br />  &lt;input class="bn" type="button" value="setOrderByContext" onclick="list.setOrderByContext({orderByName:'user.birthday',orderByType:'asc'});" /&gt;<br />  &lt;input class="bn" type="button" value="viewHtml  查看源代码" onclick="viewHtml();" /&gt; <br /> <br /> &lt;/div&gt;<br />&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;tr&gt;<br />&lt;td style="width:100%;height:100;border-top:1 solid #CCCCCC;" colspan="2"&gt;</p>
		<p> &lt;table style="width:100%;height:100%;table-layout:fixed;" cellpadding="0" cellspacing="0" border="0"&gt;<br /> &lt;tr&gt;<br /> &lt;td&gt;<br />  &lt;div id="result" style="width:100%;height:100%;overflow:auto;padding:2;table-layout:fixed;"&gt;result&lt;/div&gt;<br /> &lt;/td&gt;<br /> &lt;/tr&gt;<br /> &lt;/table&gt;<br /> <br />&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;/table&gt;</p>
		<p> </p>
		<p>&lt;/body&gt;<br />&lt;/html&gt;</p>
		<p> </p>
		<p>
				<br /> </p>
<img src ="http://www.blogjava.net/frogfool/aggbug/86787.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/frogfool/" target="_blank">frogfool</a> 2006-12-11 00:49 <a href="http://www.blogjava.net/frogfool/archive/2006/12/11/86787.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ajax support (prototyp.js required)</title><link>http://www.blogjava.net/frogfool/archive/2006/11/22/82906.html</link><dc:creator>frogfool</dc:creator><author>frogfool</author><pubDate>Wed, 22 Nov 2006 14:35:00 GMT</pubDate><guid>http://www.blogjava.net/frogfool/archive/2006/11/22/82906.html</guid><wfw:comment>http://www.blogjava.net/frogfool/comments/82906.html</wfw:comment><comments>http://www.blogjava.net/frogfool/archive/2006/11/22/82906.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/frogfool/comments/commentRss/82906.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/frogfool/services/trackbacks/82906.html</trackback:ping><description><![CDATA[
		<p>//ajax support<br />var J = { <br /> request: function(url, param, onComplete) {  <br />  new Ajax.Request(<br />         url,<br />         {<br />          method: 'post', <br />          parameters: param, <br />          onComplete: function(request) {<br />           var o = eval('(' + request.responseText + ')');<br />     if(null != o.exception) {<br />      Load.off();<br />      Msg.exception(o.exception);  <br />     } else {<br />            (onComplete || Prototype.emptyFunction)(o);<br />           }<br />           o = null;<br />    },<br />          onLoading: function(request) {<br />     Load.on();<br />    },<br />    onLoaded: function(request) {<br />     Load.off();<br />    }<br />         }<br />     );<br />   },<br /> <br />   update: function(url, param, container) {  <br />    new Ajax.Updater(<br />    container, <br />    url, <br />    {<br />     method: 'post',<br />     asynchronous: true, <br />     evalScripts: true,<br />    parameters: param,<br />    onLoading: function(request) {<br />     Load.on();<br />    },<br />    onLoaded: function(request) {<br />     Load.off();<br />    }<br />   }<br />  );<br />   }  <br />};</p>
		<p> </p>
		<p>
				<br />var Msg = {<br /> exceptionLayer:null,<br /> exceptionLayerMessage:null,<br /> exceptionLayerStackTrace:null,<br /> init: function() {<br />  var s = [];<br />  s[s.length] = '&lt;div id="exceptionLayer" name="exceptionLayer" style="position:absolute;z-index:101;display:none;width:100%;height:100%;text-align:center;top:0;left:0;padding-top:100;"&gt;';<br />  s[s.length] = '&lt;div class="font_exception" style="width:600;border:1px solid #FF0000;background-color:#FFFF00;padding:10px;filter:alpha(opacity=90)progid:DXImageTransform.Microsoft.Fade(duration=0.2)progid:DXImageTransform.Microsoft.Shadow(color=#777777,direction=135,strength=3);"&gt;';<br />  s[s.length] = '&lt;div style="width:100%;height:22;text-align:left;"&gt;Exception occur:&lt;/div&gt;';<br />  s[s.length] = '&lt;div id="exceptionLayerMessage" name="exceptionLayerMessage" style="font-weight:bold;width:100%;height:50;overflow:auto;text-align:left;"&gt;&amp;nbsp;&lt;/div&gt;';<br />  s[s.length] = '&lt;div style="width:100%;height:22;text-align:right;padding-top:5;"&gt;&lt;input type="button" style="width:120;" value="Close" class="font_exception" style="border:1px solid #FF0000;" onclick="Msg.exceptionOff();" /&gt;&amp;nbsp;&lt;input type="button" style="width:120;" value="Detail &gt;&gt;" class="font_exception" style="border:1px solid #FF0000;" onclick="Msg.switchExceptionLayerStackTrace();" /&gt;&lt;/div&gt;';<br />  s[s.length] = '&lt;div id="exceptionLayerStackTrace" name="exceptionLayerStackTrace" style="width:100%;height:300;padding-top:5;overflow:auto;text-align:left;display:none;"&gt;&amp;nbsp;&lt;/div&gt;';<br />  s[s.length] = '&lt;/div&gt;';<br />  s[s.length] = '&lt;/div&gt;';  <br />  document.writeln(s.join(''));<br />  s = null;<br />  this.exceptionLayer = document.all.exceptionLayer;   <br />  this.exceptionLayerMessage = $('exceptionLayerMessage');<br />  this.exceptionLayerStackTrace = $('exceptionLayerStackTrace');<br /> },<br /> exception: function(e) {    <br />    Cover.on();<br />    this.exceptionLayerStackTrace.style.display = 'none';<br />    this.exceptionLayer.style.display = 'block';    <br />    this.exceptionLayerMessage.innerHTML = '&lt;xmp&gt;' + e.message + '&lt;/xmp&gt;';<br />    this.exceptionLayerStackTrace.innerHTML = '&lt;xmp&gt;' + e.stackTrace + '&lt;/xmp&gt;';<br />   },<br />   switchExceptionLayerStackTrace: function() {   <br />    event.srcElement.value = ('Detail &gt;&gt;'==event.srcElement.value) ? 'Detail &lt;&lt;' : 'Detail &gt;&gt;';<br />    this.exceptionLayerStackTrace.style.display = ('none'==this.exceptionLayerStackTrace.style.display) ? 'block' : 'none';<br />   },<br />   exceptionOff: function() {<br />    Cover.off();<br />    this.exceptionLayer.style.display = 'none';<br />   }<br />}<br />Msg.init();</p>
		<p> </p>
		<p>
				<br />var Cover = {<br /> coverLayer:null,<br /> init: function() {<br />  document.writeln('&lt;iframe id="coverLayer" name="coverLayer" frameborder="no" style="position:absolute;width:100%;height:100%;top:0;left:0;z-index:100;display:none;margin:0;padding:0;filter:alpha(opacity=10);"&gt;&lt;/iframe&gt;');<br />  window.frames.coverLayer.document.close();<br />  this.coverLayer = document.all.coverLayer;<br /> },<br /> on: function() {<br />  this.coverLayer.style.display = 'block';<br /> },<br /> off: function() {<br />  this.coverLayer.style.display = 'none';<br /> }<br />};<br />Cover.init();</p>
		<p> </p>
		<p>
				<br />var Load = {<br /> loadLayer: null,<br /> init: function() {<br />  document.writeln('&lt;div id="loadLayer" name="loadLayer" style="position:absolute;z-index:101;display:none;width:200;height:20;right:10;bottom:10;font-size:12px;font-family:Verdana,Simsun;background-color:#FFFF00;border:1px solid #FF0000;padding:2;cursor:hand;filter:progid:DXImageTransform.Microsoft.Fade(duration=0.2)progid:DXImageTransform.Microsoft.Shadow(color=#777777,direction=135,strength=3);" onclick="Load.off();" title="close"&gt;&lt;span class="loader"&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;loading...&lt;/div&gt;');<br />  this.loadLayer = document.all.loadLayer;<br /> },<br /> on: function() {<br />  Cover.on();<br />  this.loadLayer.style.display = 'block';<br />  window.status = 'loading...';<br /> },<br /> off: function() {<br />  Cover.off();<br />  this.loadLayer.style.display = 'none';<br />  window.status = 'loaded!';<br /> }<br />};<br />Load.init();<br /><br /><br /><br /><br /><br /><br /><br /><br /><br />//css<br />.loader {<br /> border:0; <br /> width:16;<br /> height:16;<br /> background: url(../image/loader.gif) no-repeat 0em 0em;<br />}<br />.font_exception {<br /> color: #A90101;<br /> font-size: 12px; <br /> font-family: Verdana, Simsun;<br />}<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />//usage<br />function initAbstractEntityType() {<br /> J.request(<br />        'findAbstractEntityType.html',<br />        '', <br />        onInitAbstractEntityType<br />    );<br />}</p>
		<p>function onInitAbstractEntityType(o) {<br /> var xtree = o.xtree;<br /> var item = null;<br /> for(var i = 0; i&lt;xtree.length; i++ ) {<br />  item = xtree[i];<br />  //sText, sXmlSrc, sAction, eParent, sIcon, sOpenIcon<br />  tree.add(<br />   new WebFXLoadTreeItem(<br />    item.text + ' ' + item.name, <br />    'findEntityType.html?invokeType=tree&amp;abstractEntityTypeId=' + item.id, <br />    'javascript:findEntityTypeByAbstractEntityTypeId(' + item.id + ');'<br />   )<br />  );<br /> }<br /> item = null;<br /> xtree = null;<br />}<br /><br /><br /><br /><br /><br /><br />//request.responseText<br />{<br /> entityTypes:[<br />&lt;#if entityTypes ? exists&gt;&lt;#list entityTypes as entityType&gt;<br />  {id:'${(entityType.id)?if_exists}', text:'${(entityType.text)?if_exists}', name:'${(entityType.name)?if_exists}'}&lt;#if entityType_has_next&gt;,&lt;/#if&gt;<br />&lt;/#list&gt;&lt;/#if&gt;<br /> ]<br />}<br /><br />//exception<br />{<br /> exception: {<br />  message:'${(Request["_exception_message_"])?if_exists?j_string}',<br />  stackTrace:'${(Request["_exception_stack_trace_"])?if_exists?j_string}'<br /> }<br />}</p>
<img src ="http://www.blogjava.net/frogfool/aggbug/82906.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/frogfool/" target="_blank">frogfool</a> 2006-11-22 22:35 <a href="http://www.blogjava.net/frogfool/archive/2006/11/22/82906.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>