其实这个控件的核心基本都在JS上,而相关的数据绑定和显示却非常简单。而需要说明的是在Discuz!NT的1.0
和2.0正式版,这个控件做过一些调整,当然改动也基本上是在JS上,今天给大家的源码是1.0正式版的代码,虽然
有些“旧”,但程序本身的思想没变,大家只要明白了这里的源码,有了这碗酒垫底,相信再看即将开源的2.0代码,
就会一目了然了。

    好了,废话到此,马上开始今天的话题!

    先请大家看一下这个控件运行时的效果图:

    效果图1:
 
        Discuz!NT控件剖析 之 左侧导航控件 [原创: 附源码] 

    效果图2: 
  Discuz!NT控件剖析 之 左侧导航控件 [原创: 附源码]
    首先将相应的C#代码放出来:

    

  1

    上面的代码因为太简单,就不多做介绍了。而XML的结构如下:


    其中的submain表(这里暂且这样说)的menuparentid(子菜单的父menuid),是关联mainmenu表的menuid,这样就能够这
这两个表有一个主从结构了。当前如果将这两个表合成“一个”也可以,前提是要减少数据冗余,因为mainmenu表里是不
包含link(点击子菜单跳转地址),frameid(子菜单跳转的frameid)这样的信息的。
   
   
    最后要说明的是这个控件的JS,代码如下(详情见注释):
    

  1Discuz!NT控件剖析 之 左侧导航控件 [原创: 附源码]   
  2Discuz!NT控件剖析 之 左侧导航控件 [原创: 附源码]var remember = false//记录当前菜单状态,当下次访问时使用

  3Discuz!NT控件剖析 之 左侧导航控件 [原创: 附源码]var contractall_default= 1//系统菜单项状态  1:只显示第一项  2:展开所有项   3:收缩所有的菜单项
  4Discuz!NT控件剖析 之 左侧导航控件 [原创: 附源码]
  5Discuz!NT控件剖析 之 左侧导航控件 [原创: 附源码]var menu, titles, submenus, arrows, bypixels; //定义指定的菜单数组变量
  6Discuz!NT控件剖析 之 左侧导航控件 [原创: 附源码]var heights = new Array();
  7Discuz!NT控件剖析 之 左侧导航控件 [原创: 附源码]var speed=10;  //加载菜单项的速度 

  8Discuz!NT控件剖析 之 左侧导航控件 [原创: 附源码]
  9Discuz!NT控件剖析 之 左侧导航控件 [原创: 附源码]var n = navigator.userAgent;
 10
Discuz!NT控件剖析 之 左侧导航控件 [原创: 附源码]
 11Discuz!NT控件剖析 之 左侧导航控件 [原创: 附源码]if(/Opera/
.test(n)) 
 12

 

    其余的大家可以详细看一下包中的相关内容即可, 这里就不再多说了:)

 
    好了,主要是东西就先交待到这里了。如果大家有什么问题或建议,欢迎与我交流,我的邮件是daizhj@discuz.com,
daizhj617595@126.com  
    

    下载地址:/Files/daizhj/navmenu.rar

    关键字: .net, 控件, navmenu, 导航, control, discuz, discuz!nt, discuznt, 代震军, daizhj
 
  

 


 

相关文章:

  • 2022-12-23
  • 2022-01-23
  • 2022-12-23
  • 2021-07-07
  • 2022-12-23
  • 2022-01-26
猜你喜欢
  • 2021-12-21
  • 2021-11-29
  • 2021-08-21
  • 2022-01-02
  • 2021-08-25
  • 2022-12-23
相关资源
相似解决方案