可定制页面实现 页面中显示几块数据集,或功能集,用户可以定制每块集合,或者拖拽数据集在页面上展现的位置,后台如何设计,页面怎么实现,望高手不吝赐教! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我只知道ASP里面可以设置模板页 在自己其他编写的页面套用模板即可 JSP定制 没玩过 定制功能可以用1楼说的模板页动态呈现;拖曳布局需要ajax,给你点仿google个性化拖动的js代码 //根据类型获取Elements function getElementsByClassName(className,tagName) { var el = [], _el = document.getElementsByTagName(tagName); for (var i=0; i<_el.length; i++ ) { if (_el[i].className == className) { el[el.length] = _el[i]; } }; return el; } //获得元素位置索引 function getElementLocation(ele) { var loc = 1; if(ele) { for(var i=0; i<ele.parentNode.children.length; i++ ) { if (ele.parentNode.children[i].id == ele.id ) { loc = i; break; } } } return loc; } var edit = false; //存放容器 var parentTable = null; //位置顺序 var EleOrder = 0; var hydiv=null; var tdiv=null; var ao = null; //取得坐标 function getInfo(o) { var to=new Object(); if(o) { to.left=to.right=to.top=to.bottom=0; var twidth=o.offsetWidth; var theight=o.offsetHeight; while(o!=document.body){ to.left+=o.offsetLeft; to.top+=o.offsetTop; if(o.offsetParent.tagName && o.offsetParent.tagName=='HTML') o=o.parentElement; else o=o.offsetParent; } to.right=to.left+twidth; if(o.style.marginTop) to.bottom=parseInt(to.top)+parseInt(theight)+parseInt(o.style.marginTop); else to.bottom=parseInt(to.top)+theight; } return to; } //缓慢滑入、滑出效果,用于恢复位置 function ff(aa,ab) { var ac=parseInt(getInfo(tdiv).left); var ad=parseInt(getInfo(tdiv).top); var ae=(ac-getInfo(ao).left)/ab; var af=(ad-getInfo(ao).top)/ab; return setInterval(function(){if(ab<1){ clearInterval(mm); tdiv.style.display="none";// obj.removeNode(true); tdiv.parentNode.removeChild(tdiv) tdiv = null; ao=null; return } ab--; ac-=ae; ad-=af; if(tdiv) { tdiv.style.left=parseInt(ac)+'px'; tdiv.style.top=parseInt(ad)+'px' } } ,aa/ab) } function Drag(event) { this.dragStart = dragStart; this.onDrag = draging; this.dragEnd= dragEnd; } function dragStart(event) { ao = event.srcElement; if((ao.tagName=='TD')||(ao.tagName=='TR')) ao=ao.offsetParent; else return; ao.rows[0].className='dragTR'; ao.rows[0].style.display=''; var tmp = getInfo(ao); //虚线框 if(hydiv) { hydiv.style.display="none"; if(hydiv.parentNode) hydiv.parentNode.removeChild(hydiv) } hydiv=document.createElement("div");// hydiv.style.borderTop='1px dotted'; hydiv.style.border='2px dashed #3366cc'; hydiv.style.backgroundColor="White"; hydiv.style.display="block"; hydiv.style.position="absolute"; if (ao.clientWidth) { hydiv.style.width = ao.clientWidth + "px"; hydiv.style.height = ao.clientHeight + "px"; } hydiv.style.left=tmp.left; hydiv.style.top=tmp.top; hydiv.innerText = " "; document.body.appendChild(hydiv); if(tdiv) { tdiv.style.display="none"; window.status = tdiv.outerHTML; if(tdiv.parentNode) tdiv.parentNode.removeChild(tdiv) } tdiv=document.createElement('div'); tdiv.innerHTML=ao.outerHTML;// tdiv.innerHTML = "<table class='dragTable' width='150' border='1' cellspacing='0'> <tr class='dragTR'><td align='right'><input type='submit' value='关闭' /> <input value='折叠' type='button' /> <input value='修改' type='button' /></td></tr><tr><td>拖动模块</td></tr></table>"; tdiv.style.display='block'; tdiv.style.position='absolute'; tdiv.style.cursor='move'; window.status = tmp.top + "," + top.left; tdiv.style.width=ao.offsetWidth; tdiv.style.height=ao.offsetHeight; if(tmp.top) tdiv.style.top=tmp.top; if(tmp.left) tdiv.style.left=tmp.left; document.body.appendChild(tdiv); this.lastX=event.clientX; this.lastY=event.clientY; this.lastLeft=tmp.left; this.lastTop=tmp.top; this.draged = true; } function draging(event) { //重要:判断MOUSE的位置 if(ao == null || !this.draged) return; var tX=event.clientX; var tY=event.clientY; //加上MarginTop的值 var bodyMarginTop = parseInt(document.body.style.marginTop); if(bodyMarginTop > 0) tY += bodyMarginTop; if(tdiv) { tdiv.style.left=parseInt(this.lastLeft)+tX-this.lastX; tdiv.style.top=parseInt(this.lastTop)+tY-this.lastY; tdiv.style.filter='alpha(opacity=50)'; } for(var r=0;r<parentTable.rows.length;r++){ for(var i=0;i<parentTable.rows[r].cells.length;i++){ var parentCell=getInfo(parentTable.rows[r].cells[i]); if(tX>=parentCell.left&&tX<=parentCell.right&&tY>=parentCell.top&&tY<=parentCell.bottom){ var subTables=parentTable.rows[r].cells[i].getElementsByTagName('table'); if(subTables.length==0){ if(tX>=parentCell.left&&tX<=parentCell.right&&tY>=parentCell.top&&tY<=parentCell.bottom){ parentTable.rows[r].cells[i].appendChild(ao); } break; } for(var j=0;j<subTables.length;j++){ var subTable=getInfo(subTables[j]); if(subTables[j].clientWidth>0) { //插入虚线框 hydiv.style.left=subTable.left; hydiv.style.top=subTable.top; hydiv.style.width=subTables[j].clientWidth; } if(tX>=subTable.left&&tX<=subTable.right&&tY>=subTable.top&&tY<=subTable.bottom){ parentTable.rows[r].cells[i].insertBefore(ao,subTables[j]); break; }else{ parentTable.rows[r].cells[i].appendChild(ao); } } } } } } function dragEnd(event) { if(this.draged) { this.draged = false; ao.zoneIndex = EleOrder; ao.zone = ao.parentNode.id.replace("td",""); mm=ff(150,15); } if(hydiv) { hydiv.style.display="none"; if(hydiv.parentNode) hydiv.parentNode.removeChild(hydiv) } if(parentTable) { for(var m = 0;m<parentTable.length;m++) { CheckBlankTD(parentTable[m]); } } var ctlid; if(ao) { EleOrder = getElementLocation(ao); if(ao.parentNode) ctlid = ao.id + ',' + ao.parentNode.id + ',' + EleOrder; if(ao.zoneIndex != EleOrder || "td" + ao.zone != ao.parentNode.id) { ChangeServerLayout(ctlid); } } } //给没有内容的td设置高度 function CheckBlankTD(tbl) { for(var i=0;i<tbl.cells.length;i++) { var tdBlank = tbl.cells[i]; if(tdBlank) { if(tdBlank.style.height<50) tdBlank.style.height=50; } } } 我想做一个简单的论坛,请各位前辈帮忙提一点设计上的建议。 如做上传图片,jsp获取文本框的值为空.如不做上传力片,则jsp获取文本框的值正确,为什么 jsp的表单显示不正常 java链接数据库中几句不懂得代码 关于修改onClick事件的问题 jsp删除 有没有办法在JSP里用语句从ORACLE的一个表中的数据来更新MYSQL表中的一个表?? 求hibernate高手解惑 个人资料是放在一张数据表好还是两张? 有一个JSP的用户注册表的摸板,里面有一个单选按纽组,分别表示“男”、“女”,当我从数据库中读取数据时如何正确显示“男”的单选按纽 URL 一个项目
拖曳布局需要ajax,给你点仿google个性化拖动的js代码
//根据类型获取Elements
function getElementsByClassName(className,tagName)
{
var el = [],
_el = document.getElementsByTagName(tagName);
for (var i=0; i<_el.length; i++ )
{
if (_el[i].className == className)
{
el[el.length] = _el[i];
}
};
return el;
} //获得元素位置索引
function getElementLocation(ele)
{
var loc = 1;
if(ele)
{
for(var i=0; i<ele.parentNode.children.length; i++ )
{
if (ele.parentNode.children[i].id == ele.id )
{
loc = i;
break;
}
}
}
return loc;
}
var edit = false;
//存放容器
var parentTable = null;
//位置顺序
var EleOrder = 0;
var hydiv=null;
var tdiv=null;
var ao = null;
//取得坐标
function getInfo(o)
{
var to=new Object();
if(o)
{
to.left=to.right=to.top=to.bottom=0;
var twidth=o.offsetWidth;
var theight=o.offsetHeight;
while(o!=document.body){
to.left+=o.offsetLeft;
to.top+=o.offsetTop;
if(o.offsetParent.tagName && o.offsetParent.tagName=='HTML')
o=o.parentElement;
else
o=o.offsetParent;
}
to.right=to.left+twidth;
if(o.style.marginTop)
to.bottom=parseInt(to.top)+parseInt(theight)+parseInt(o.style.marginTop);
else
to.bottom=parseInt(to.top)+theight;
}
return to;
}
//缓慢滑入、滑出效果,用于恢复位置
function ff(aa,ab)
{
var ac=parseInt(getInfo(tdiv).left);
var ad=parseInt(getInfo(tdiv).top);
var ae=(ac-getInfo(ao).left)/ab;
var af=(ad-getInfo(ao).top)/ab;
return setInterval(function(){if(ab<1){
clearInterval(mm);
tdiv.style.display="none";
// obj.removeNode(true);
tdiv.parentNode.removeChild(tdiv)
tdiv = null;
ao=null;
return
}
ab--;
ac-=ae;
ad-=af;
if(tdiv)
{
tdiv.style.left=parseInt(ac)+'px';
tdiv.style.top=parseInt(ad)+'px'
}
}
,aa/ab)
} function Drag(event)
{
this.dragStart = dragStart;
this.onDrag = draging;
this.dragEnd= dragEnd;
}
function dragStart(event)
{
ao = event.srcElement; if((ao.tagName=='TD')||(ao.tagName=='TR'))
ao=ao.offsetParent;
else
return;
ao.rows[0].className='dragTR';
ao.rows[0].style.display='';
var tmp = getInfo(ao);
//虚线框
if(hydiv)
{
hydiv.style.display="none";
if(hydiv.parentNode)
hydiv.parentNode.removeChild(hydiv)
}
hydiv=document.createElement("div");
// hydiv.style.borderTop='1px dotted';
hydiv.style.border='2px dashed #3366cc';
hydiv.style.backgroundColor="White";
hydiv.style.display="block";
hydiv.style.position="absolute";
if (ao.clientWidth)
{
hydiv.style.width = ao.clientWidth + "px";
hydiv.style.height = ao.clientHeight + "px";
}
hydiv.style.left=tmp.left;
hydiv.style.top=tmp.top;
hydiv.innerText = " ";
document.body.appendChild(hydiv);
if(tdiv)
{
tdiv.style.display="none";
window.status = tdiv.outerHTML;
if(tdiv.parentNode)
tdiv.parentNode.removeChild(tdiv)
}
tdiv=document.createElement('div');
tdiv.innerHTML=ao.outerHTML;
// tdiv.innerHTML = "<table class='dragTable' width='150' border='1' cellspacing='0'> <tr class='dragTR'><td align='right'><input type='submit' value='关闭' /> <input value='折叠' type='button' /> <input value='修改' type='button' /></td></tr><tr><td>拖动模块</td></tr></table>";
tdiv.style.display='block';
tdiv.style.position='absolute';
tdiv.style.cursor='move';
window.status = tmp.top + "," + top.left;
tdiv.style.width=ao.offsetWidth;
tdiv.style.height=ao.offsetHeight;
if(tmp.top)
tdiv.style.top=tmp.top;
if(tmp.left)
tdiv.style.left=tmp.left;
document.body.appendChild(tdiv);
this.lastX=event.clientX;
this.lastY=event.clientY;
this.lastLeft=tmp.left;
this.lastTop=tmp.top; this.draged = true;
}
function draging(event)
{
//重要:判断MOUSE的位置
if(ao == null || !this.draged)
return;
var tX=event.clientX;
var tY=event.clientY;
//加上MarginTop的值
var bodyMarginTop = parseInt(document.body.style.marginTop);
if(bodyMarginTop > 0)
tY += bodyMarginTop;
if(tdiv)
{
tdiv.style.left=parseInt(this.lastLeft)+tX-this.lastX;
tdiv.style.top=parseInt(this.lastTop)+tY-this.lastY;
tdiv.style.filter='alpha(opacity=50)';
}
for(var r=0;r<parentTable.rows.length;r++){
for(var i=0;i<parentTable.rows[r].cells.length;i++){
var parentCell=getInfo(parentTable.rows[r].cells[i]);
if(tX>=parentCell.left&&tX<=parentCell.right&&tY>=parentCell.top&&tY<=parentCell.bottom){
var subTables=parentTable.rows[r].cells[i].getElementsByTagName('table');
if(subTables.length==0){
if(tX>=parentCell.left&&tX<=parentCell.right&&tY>=parentCell.top&&tY<=parentCell.bottom){
parentTable.rows[r].cells[i].appendChild(ao);
}
break;
}
for(var j=0;j<subTables.length;j++){
var subTable=getInfo(subTables[j]); if(subTables[j].clientWidth>0)
{
//插入虚线框
hydiv.style.left=subTable.left;
hydiv.style.top=subTable.top;
hydiv.style.width=subTables[j].clientWidth;
}
if(tX>=subTable.left&&tX<=subTable.right&&tY>=subTable.top&&tY<=subTable.bottom){
parentTable.rows[r].cells[i].insertBefore(ao,subTables[j]);
break;
}else{
parentTable.rows[r].cells[i].appendChild(ao);
}
}
}
}
}
}
function dragEnd(event)
{
if(this.draged)
{
this.draged = false;
ao.zoneIndex = EleOrder;
ao.zone = ao.parentNode.id.replace("td","");
mm=ff(150,15);
}
if(hydiv)
{
hydiv.style.display="none";
if(hydiv.parentNode)
hydiv.parentNode.removeChild(hydiv)
}
if(parentTable)
{
for(var m = 0;m<parentTable.length;m++)
{
CheckBlankTD(parentTable[m]);
}
}
var ctlid;
if(ao)
{
EleOrder = getElementLocation(ao);
if(ao.parentNode)
ctlid = ao.id + ',' + ao.parentNode.id + ',' + EleOrder;
if(ao.zoneIndex != EleOrder || "td" + ao.zone != ao.parentNode.id)
{
ChangeServerLayout(ctlid);
}
}
}
//给没有内容的td设置高度
function CheckBlankTD(tbl)
{
for(var i=0;i<tbl.cells.length;i++)
{
var tdBlank = tbl.cells[i];
if(tdBlank)
{
if(tdBlank.style.height<50)
tdBlank.style.height=50;
}
}
}