利用AjaxControlToolkit:Accordion做导航栏

         前段时间在做了一个项目,在设计时使用了SiteMap作为整个项目的导航,在做界面设计时利用第三方控件ComponentArt来实现,这东西用起来很方便,但就是不免费,由于没钱只能找破解的,但在使用过程中,经常出问题,被上头批评了好几回,也怪自己懒,不想用JS来写,后来想起了AjaxControlToolkit有个Accordion可以收缩的,和ComponentArt的导航效果一个样,实现也不难,现在和大家分享一下自己的这段代码:

这是aspx代码

None.gif < ajaxToolkit:Accordion  ID ="acd1"  runat ="server"  OnItemDataBound ="acd1_ItemDataBound"
None.gif    CssClass
="navBar"  HeaderCssClass ="navHeader"  AutoSize ="Fill"  Height ="400"  SelectedIndex ="-1" >
None.gif    
< HeaderTemplate >
ExpandedBlockStart.gifContractedBlock.gif        
<% dot.gif #Eval("Title" %>
None.gif    
</ HeaderTemplate >
None.gif    
< ContentTemplate >
None.gif        
< asp:Repeater  ID ="rpt"  runat ="server"  OnItemDataBound ="rpt_ItemDataBound" >
None.gif            
< ItemTemplate >
None.gif                
< div  class ="divlnk" >
ExpandedBlockStart.gifContractedBlock.gif                    
< asp:HyperLink  ID ="hlnk"  CssClass ="hlnk"  runat ="server"  Text ='<%#Eval("Title")% > ' NavigateUrl=' <% dot.gif #Eval("url" %> ' />
None.gif                
</ div >
None.gif            
</ ItemTemplate >
None.gif        
</ asp:Repeater >
None.gif    
</ ContentTemplate >
None.gif
</ ajaxToolkit:Accordion >

这是cs代码:
None.gif protected   void  Page_Load( object  sender, EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        SiteMapNode node 
= SiteMap.RootNode;
InBlock.gif        
this.acd1.DataSource = node.ChildNodes;
InBlock.gif        acd1.DataBind();
InBlock.gif        
int i = 0;
InBlock.gif        
foreach (SiteMapNode no in node.ChildNodes)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
if (SiteMap.CurrentNode != null && SiteMap.CurrentNode.ParentNode != null && SiteMap.CurrentNode.ParentNode == no)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                acd1.SelectedIndex 
= i;
InBlock.gif                
break;
ExpandedSubBlockEnd.gif            }

InBlock.gif            i
++;
ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif    }

None.gif    
protected   void  acd1_ItemDataBound( object  sender, AjaxControlToolkit.AccordionItemEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        Repeater rpt 
= e.AccordionItem.FindControl("rpt"as Repeater;
InBlock.gif        
if (rpt != null)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            SiteMapNode node 
= e.Item as SiteMapNode;
InBlock.gif            
if (node != null && node.ChildNodes.Count > 0)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                rpt.DataSource 
= node.ChildNodes;
InBlock.gif                rpt.DataBind();
ExpandedSubBlockEnd.gif            }

ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif    }

None.gif    
protected   void  rpt_ItemDataBound( object  sender, RepeaterItemEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        Image img 
= e.Item.FindControl("img"as Image;
InBlock.gif        SiteMapNode node 
= e.Item.DataItem as SiteMapNode;
InBlock.gif        
if (node != null)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
string imgUrl = node["img"]; //这在SiteMap自己加的属性
InBlock.gif
            if (node != null && imgUrl != null)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                img.ImageUrl 
= imgUrl;
ExpandedSubBlockEnd.gif            }

ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif    }

如果学过数据绑定控件应可以看懂的。
说明:这段代码只是实现二级导航,好多管理系统的后台都有类似的导航。

转载于:https://www.cnblogs.com/SouthSea/archive/2007/08/04/842468.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值