一个封装的QQ面板控件

做.net的web开发几年了,只记得第一个project时用的是asp.net自带的服务器端控件(如datagrid等),而后就完全放弃了服务器端控件的做法,而是采用客户端控件加ajax,实现客户端完全无刷新来做的。因自己做的是企业开发,客户端固定在了IE平台之上,因此选择了htc作为客户端控件的封装,把我写的几个已经封装好的控件共享给大家,希望大家提出自己的看法和意见。


None.gif <!--
None.gifDate:    2006/2/15
None.gifAuthor:    zkw
None.gifContent:qq面板控件
None.gif
-->
None.gif
< public:attach      event =oncontentready  onevent ="init()"   />
None.gif
< public:attach     event =onclick  onevent ="clickit()"   />
None.gif
<!-- 选择某个面板的方法 -->
None.gif
< public:method  name ="SwitchTab"  INTERNALNAME ="m_switchTab"   />
None.gif
<!-- 面板完全显示之后的事件 -->     
None.gif
< PUBLIC:EVENT  ID ="evtshowok"   NAME ="onshowok" />
None.gif
<!-- 面板单击后的事件 -->     
None.gif
< PUBLIC:EVENT  ID ="evtshowbefore"   NAME ="onshowbefore" />
None.gif
<!-- 当前选择的行索引 -->
None.gif
< public:property  name ="SelectedIndex"  get ="getIndex"   />
ExpandedBlockStart.gifContractedBlock.gif
< script  language ="javascript" > dot.gif
InBlock.gif
var curtitle = null;        //当前标题行
InBlock.gif
var clicktr = null;            //正在单击的行
InBlock.gif
var stat = 0;
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif
function getIndex()dot.gif{
InBlock.gif    
if(curtitle!=null)
InBlock.gif        
return curtitle.rowIndex;
InBlock.gif    
return -1;
ExpandedSubBlockEnd.gif}
    
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif
function init()dot.gif{
InBlock.gif    
if(element.tagName!="TABLE")
InBlock.gif        
return;
InBlock.gif    element.cellSpacing 
= "0";
InBlock.gif    element.cellPadding 
= "0";
InBlock.gif    
var j=0;
InBlock.gif    
var curshow =0;
InBlock.gif    
if(element.shownum)curshow = element.shownum;        //shownum(attribute):默认显示第几个面板(从0开始)
ExpandedSubBlockStart.gifContractedSubBlock.gif
    for(var i=0;i<element.rows.length;i++)dot.gif{
InBlock.gif        
var row = element.rows[i];
ExpandedSubBlockStart.gifContractedSubBlock.gif        
if(row.istitle=="1")dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif            
if(j++==curshow)dot.gif{
InBlock.gif                curtitle 
= element.rows[i];
ExpandedSubBlockEnd.gif            }

ExpandedSubBlockStart.gifContractedSubBlock.gif            
elsedot.gif{
InBlock.gif                element.rows[i
+1].style.display = "none";
InBlock.gif                element.rows[i
+1].cells[0].style.height = "0%";
InBlock.gif                element.rows[i
+1].cells[0].children[0].style.visibility = "hidden";    //内容面板中有个要求,即它里面的td中必须只有一个子元素(即其所有内容都是在这个子元素之中)
InBlock.gif
                element.rows[i+1].cells[0].children[0].style.overflow = "hidden";
ExpandedSubBlockEnd.gif            }

ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

ExpandedSubBlockEnd.gif}

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif
function getRow(inrowobj)dot.gif{
InBlock.gif    tmp 
= inrowobj;
ExpandedSubBlockStart.gifContractedSubBlock.gif    
while(tmp!=null&&tmp.tagName.toLowerCase()!="tr")dot.gif{
InBlock.gif        tmp 
= tmp.parentElement;
ExpandedSubBlockEnd.gif    }

InBlock.gif    
return tmp==null?null:(tmp.istitle=="1"?tmp:null);
ExpandedSubBlockEnd.gif}

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif
function clickit()dot.gif{
InBlock.gif    
var src = window.event.srcElement;
InBlock.gif    
var tr = getRow(src);
ExpandedSubBlockStart.gifContractedSubBlock.gif    
if(tr!=null)dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif        
if(tr!=curtitle&&clicktr==null)dot.gif{            //clicktr==null:当前没有行在单击
InBlock.gif
            tr.nextSibling.style.display = "";
InBlock.gif            clicktr 
= tr;
InBlock.gif            stat 
= 0;
ExpandedSubBlockStart.gifContractedSubBlock.gif            
try dot.gif{    
InBlock.gif                
var evt = createEventObject();    
InBlock.gif                evt.src 
= curtitle;
InBlock.gif                evt.to 
= clicktr;
InBlock.gif                evtshowbefore.fire(evt); 
ExpandedSubBlockEnd.gif            }
 
ExpandedSubBlockStart.gifContractedSubBlock.gif            
catch(e) dot.gif{};
InBlock.gif            
InBlock.gif            smoothout();
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

ExpandedSubBlockEnd.gif}

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif
function m_switchTab(index)dot.gif{
InBlock.gif    
if(curtitle.rowIndex!=index)
InBlock.gif        element.rows[index].click();
ExpandedSubBlockEnd.gif}

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif
function smoothout()dot.gif{
InBlock.gif    
if(clicktr==null)return;
InBlock.gif    stat 
= stat + 15;
ExpandedSubBlockStart.gifContractedSubBlock.gif    
if(stat<100)dot.gif{
InBlock.gif        clicktr.nextSibling.cells[
0].style.height = (stat) + "%";
InBlock.gif        curtitle.nextSibling.cells[
0].style.height = (100-stat) + "%";
InBlock.gif        window.setTimeout(smoothout,
20);
ExpandedSubBlockEnd.gif    }

ExpandedSubBlockStart.gifContractedSubBlock.gif    
elsedot.gif{
InBlock.gif        curtitle.nextSibling.style.display 
= "none";
InBlock.gif        curtitle.nextSibling.cells[
0].style.height = "0%";
InBlock.gif        curtitle.nextSibling.cells[
0].children[0].style.visibility = "hidden";
InBlock.gif        curtitle.nextSibling.cells[
0].children[0].style.overflow = "hidden";
InBlock.gif        
InBlock.gif        clicktr.nextSibling.style.display 
= "";
InBlock.gif        clicktr.nextSibling.cells[
0].style.height = "100%";
InBlock.gif        clicktr.nextSibling.cells[
0].children[0].style.visibility = "visible";
InBlock.gif        clicktr.nextSibling.cells[
0].children[0].style.overflow = "auto";
InBlock.gif        
ExpandedSubBlockStart.gifContractedSubBlock.gif        
try dot.gif{    
InBlock.gif            
var evt = createEventObject();    
InBlock.gif            evt.src 
= curtitle;
InBlock.gif            evt.to 
= clicktr;
InBlock.gif            evtshowok.fire(evt); 
ExpandedSubBlockEnd.gif        }
 
ExpandedSubBlockStart.gifContractedSubBlock.gif        
catch(e) dot.gif{};
InBlock.gif        
InBlock.gif        curtitle 
= clicktr;
InBlock.gif        clicktr 
= null;
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif
</ script >
None.gif


None.gif < html >
None.gif    
< head >
None.gif        
< title > qq面板测试 </ title >
ExpandedBlockStart.gifContractedBlock.gif        
< style > dot.gif
InBlock.gif            .title
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{dot.gif}{
InBlock.gif                overflow
:hidden;
InBlock.gif                font-size
:9pt;
InBlock.gif                text-align
:center;
InBlock.gif                background-color
:#f7f7f7;
InBlock.gif                color
:black;
InBlock.gif                cursor
:default;
InBlock.gif                height
:20px;
InBlock.gif                border-width
:1px;
InBlock.gif                border-style
:solid;
InBlock.gif                border-color
:white black black white
ExpandedSubBlockEnd.gif            
}

InBlock.gif            
InBlock.gif            .seltitle
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{dot.gif}{
InBlock.gif                overflow
:hidden;
InBlock.gif                font-size
:9pt;
InBlock.gif                font-weight
:bold;
InBlock.gif                text-align
:center;
InBlock.gif                background-color
:#316ac5;
InBlock.gif                color
:white;
InBlock.gif                cursor
:default;
InBlock.gif                height
:20px;
InBlock.gif                border-width
:1px;
InBlock.gif                border-style
:solid;
InBlock.gif                border-color
:white black black white
ExpandedSubBlockEnd.gif            
}

InBlock.gif            
ExpandedBlockEnd.gif        
</ style >
ExpandedBlockStart.gifContractedBlock.gif        
< script  language ="javascript" > dot.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif            
function chg(osel)dot.gif{
InBlock.gif                
var v = osel.options[osel.selectedIndex].value
ExpandedSubBlockStart.gifContractedSubBlock.gif                
if(v!="-1")dot.gif{
InBlock.gif                    document.all[
"qqbar"].SwitchTab(v);
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

InBlock.gif            
ExpandedSubBlockStart.gifContractedSubBlock.gif            
function clicktab()dot.gif{
InBlock.gif                
var src = window.event.src;
InBlock.gif                
var to = window.event.to;
InBlock.gif                
//debugger;
InBlock.gif
                src.cells[0].className = "title";
InBlock.gif                to.cells[
0].className = "seltitle";
ExpandedSubBlockEnd.gif            }

ExpandedBlockEnd.gif        
</ script >
None.gif    
</ head >
None.gif    
< body >
None.gif        
< input  type ="button"  value ="当前显示的行标题索引"  onclick ="alert('当前选择的行索引 :' + document.all['qqbar'].SelectedIndex)" >
None.gif        
< select  onchange ="chg(this)" >
None.gif            
< option  value ="-1" > 请选择一个面板 </ option >
None.gif            
< option  value ="0" > 面板1 </ option >
None.gif            
< option  value ="2" > 面板2 </ option >
None.gif            
< option  value ="4" > 面板3 </ option >
None.gif            
< option  value ="6" > 面板4 </ option >
None.gif            
< option  value ="8" > 面板5 </ option >
None.gif        
</ select >
None.gif        
< div  style ="width:130px;height:450px;overflow:hidden" >
None.gif            
< table  id ="qqbar"  shownum ="2"  onshowbefore ="clicktab()"  onshowok ="window.status  ='当前选择的行标题:' + (window.event.to.innerText)"  style ="background:#e3e3e3;width:100%;height:420px;border:1px solid black;behavior:url(qqbar.htc)" >
None.gif                
< tr  istitle ="1" >
None.gif                    
< td  class ="title" > 第1个标题栏 </ td >
None.gif                
</ tr >
None.gif                
< tr >
None.gif                    
< td  class ="td" >
None.gif                        
< div  class ="content" > 内容1 </ div >
None.gif                    
</ td >
None.gif                
</ tr >
None.gif                
< tr  istitle ="1" >
None.gif                    
< td  class ="title" > 第2个标题栏 </ td >
None.gif                
</ tr >
None.gif                
< tr >
None.gif                    
< td >
None.gif                        
< div  class ="content" > 内容2 </ div >
None.gif                    
</ td >
None.gif                
</ tr >
None.gif                
< tr  istitle ="1" >
None.gif                    
< td  class ="seltitle" > 第3个标题栏 </ td >
None.gif                
</ tr >
None.gif                
< tr >
None.gif                    
< td >
None.gif                        
< div  class ="content" > 内容3 </ div >
None.gif                    
</ td >
None.gif                
</ tr >
None.gif                
< tr  istitle ="1" >
None.gif                    
< td  class ="title" > 第4个标题栏 </ td >
None.gif                
</ tr >
None.gif                
< tr >
None.gif                    
< td >
None.gif                        
< div  class ="content" > 内容4 </ div >
None.gif                    
</ td >
None.gif                
</ tr >
None.gif                
< tr  istitle ="1" >
None.gif                    
< td  class ="title" > 第5个标题栏 </ td >
None.gif                
</ tr >
None.gif                
< tr >
None.gif                    
< td >
None.gif                        
< div  class ="content" > 内容5 </ div >
None.gif                    
</ td >
None.gif                
</ tr >
None.gif            
</ table >
None.gif        
</ div >
None.gif    
</ body >
None.gif
</ html >
None.gif

 预览
qqbar.htm

下载:

qqbar.rar

转载于:https://www.cnblogs.com/cheatlove/articles/405420.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值