开发TabSet AJAX控件并集成到WebShop IDE

本文介绍了如何开发一个TabSet AJAX控件,并将其集成到WebShop的IDE环境中。控件使用table进行布局,支持添加和切换页面。详细阐述了TabSet的构造函数、Add方法以及事件处理,最后说明了在WebShop中注册和使用TabSet控件的步骤。
摘要由CSDN通过智能技术生成

 

                                    开发扩展AJAX控件--TabSet

今天的题目是开发TabSet控件,并且将它集成到webshop的IDE环境中.

初步考虑的是TabSet的页头用table来做,便于无限增加页.(即增加td),然后TabSet有Add方法,能够将DIV添加为它的子页.

最后的样式是这个样子:

下面是TabSet的构造函数

//TAB页控件
function TabSet(parent)
{
obj=new Div(parent);
obj.Table = document.createElement('table');
obj.appendChild(obj.Table);
obj.TableBody = document.createElement('TBody');
obj.Table.appendChild(obj.TableBody);

obj.HeaderRow = document.createElement('tr');
obj.TableBody.appendChild(obj.HeaderRow);
obj.Buttons=new Array();
obj.Items=new Array();
obj.SelectTab;
obj.SelectIndex;
obj.Add=TabSet_Add;
obj.GetSelectTab=TabSet_GetSelectTab;
obj.GetSelectIndex=TabSet_GetSelectIndex;
obj.SetSelectIndex=TabSet_SetSelectIndex;
obj.SetSelectTab=TabSet_SetSelectTab;
obj.OnTabChange;
return obj;
}


实现TabSet的Add方法

function TabSet_Add(title,div){
if(!div)return;
if(div.parentNode)
div.parentNode.removeChild(div);
this.appendChild(div);
div.style.borderWidth=1;
div.style.borderStyle='solid';
div.style.display='none';
var tabtd = document.createElement('td');
this.HeaderRow.appendChild(tabtd);

var tabplace=new Div(tabtd);
var button=new Link(tabplace);
button.innerHTML='  '+title+'  ';
button.href='#';
button.style.textDecoration='none';

tabplace.style.borderWidth=1;
tabplace.style.borderStyle='solid';
tabplace.style.borderBottomWidth=0;
tabplace.style.position = 'relative';
tabplace.style.zIndex = 2;


this.Buttons[this.Buttons.length]=button;
button.tab=div;
button.tabtd=tabtd;
div.tabbutton=button;
div.Index=this.Items.length;
this.Items[this.Items.length]=div;
button.owner=this;
button.tabplace=tabplace;
button.οnclick=TabSet_ButtonClick;

}


实现TabSet页头点击的事件,点击后切换页

function TabSet_ButtonClick(){
this.tab.style.display='block';
if(this.owner.SelectTab) 
if(this.owner.SelectTab!=this.tab){
this.owner.SelectTab.style.display='none';
this.owner.SelectTab.tabbutton.parentNode.style.backgroundColor='';
// this.owner.SelectTab.tabbutton.style.fontSize=12;
this.owner.SelectTab.tabbutton.tabplace.style.padding=0;
}
this.owner.SelectTab=this.tab;
this.owner.SelectIndex=this.tab.Index;

this.parentNode.style.backgroundColor=clWhite;
this.tabplace.style.padding=2;
if(this.owner.OnTabChange)this.owner.OnTabChange(this.owner,this.tab.Index);

// this.style.fontSize=16;
}
function TabSet_GetSelectTab(){
return this.SelectTab;
}

function TabSet_GetSelectIndex(){
if(this.SelectTab)
return this.SelectTab.Index;
}

function TabSet_SetSelectIndex(i){
if(isInspect)return;
if(i==null)i=0;
var button=this.Buttons[i];
if(button){
if(isIE)
button.click();
else
button.onclick();
}
}

function TabSet_SetSelectTab(i){
var tab=this.Items[i];
if(tab){
if(isIE)
tab.tabbutton.click();
else
tab.tabbutton.onclick();
}
}


好了,现在这个TabSet已经可以工作了,类似下面的代码使用它.

window.TabSet1=new TabSet();
window.Div1=new Div(TabSet1);
window.Div2=new Div(TabSet1);
window.Div3=new Div(TabSet1);
TabSet1.Name='TabSet1';
TabSet1.style.height='283';
TabSet1.style.width='461';
TabSet1.style.position='absolute';
TabSet1.style.left='99';
TabSet1.style.top='99';
TabSet1.SelectIndex=0;
Div1.Name='Div1';
Div1.style.height='259';
Div1.style.width='455';
Div1.style.position='absolute';
Div1.style.left='2';
Div1.style.top='20';
Div2.Name='Div2';
Div2.style.height='259';
Div2.style.width='455';
Div2.style.position='absolute';
Div2.style.left='2';
Div2.style.top='20';
Div3.Name='Div3';
Div3.style.height='259';
Div3.style.width='455';
Div3.style.position='absolute';
Div3.style.left='2';
Div3.style.top='20';
TabSet1.Add('Div1',Div1);;
TabSet1.Add('Div2',Div2);;
TabSet1.Add('Div3',Div3);;
TabSet1.SetSelectIndex(0);;


现在我们要将它集成到webshop的可视化IDE环境中.

在webshop/jcl目录下创建TabSet.XML文件,内容如下:

<?xml version="1.0" encoding="gb2312"?>
<class classname="TabSet" visible="true" iscontainer="true" extends="Div">
<private>
</private>
<protect>
</protect>
<public>
</public>
<published>
<properties>
<property name="SelectIndex" type="Integer">
</property>
</properties>
<methods>
</methods>
<events>
<event name="OnTabChange">
<params>
<param name="sender">
</param>
<param name="selectIndex">
</param>
</params>
</event>
</events>
</published>
</class>

然后打开webshop/config/webshop_palette.xml文件,加入下面一行:

<class classname="TabSet" file="" title="" icon="images/compalette/tabset.gif">
</class>
从而在webshop的元件选项板上增加了TabSet控件.


现在打开webshop,可以看到webshop的元件选项板上已多了一个TabSet,现在就可以可视化地拖拉并创建子页了,至此TabSet开发完成并集成到WebShop的IDE环境中.

以上开发基于WebShop 2.2版本.要下载这个TabSet的代码,可以到www.joyistar.com

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值