All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
HTML语言剖析(十二)多媒体标记_[Html教程]
创建表头固定,表体可滚动的GridView_[Asp.Net教程]
ASP.NET2.0连接ORACLE解决方案_[Asp.Net教程]
网页申请表单用户体验设计简述_[Html教程]
Silverlight,2,(beta1)数据操作(4)——调用WCF进行数据CRUD操作_[Asp.Net教程]
如何把ACCESS转成SQL数据库_[SQL,Server教程]
C#中创建Windows窗体
SQL,Server,2008重新创建表的方法_mssql学习_编程技术
PHP教程:用PHP程序对网页表单的处理_[PHP教程]
C#中的throw语句使用方法
Reading number is top 10 pictures
Desktop Wallpapers1
西游四格漫画(二)
Plump breasts1
NeedWallpaper9
Very beautiful interior decoration
你的钱干净吗?
The Soviet union swimsuit exposure in the 70 year2
YangYuYing and ZhengShaoQiu dance on the generous come interest dye-in-the-wood
Ashlynn Brooke a group sexy photo4
The service WaLiangGe Chinese aircraft carrier1
Download software ranking
C#COM编程指南
VeryCD电驴(EasyMule) V1.1.9 Build09081
C#与.NET技术平台实战演练
linux高级编程
Unix video tutorial3
Call Of Duty5
SP3 for SQL2000
Boxer's Top ten classic battle1
Sora aoi‘s film--Lust fan wall
双旗镇刀客A
aaa published in(发表于) 2013/12/15 8:41:50 Edit(编辑)
Asp.net导航控件真的值得用吗?_.net资料_编程技术

Asp.net导航控件真的值得用吗?_.net资料_编程技术

Asp.net导航控件真的值得用吗?_.net资料_编程技术-你的首页-uuhomepage.com

刚开始接触menu控件,感觉怎么这么别扭啊。


首先说数据访问部分,为了所谓的provider pattern,一层一层的包装,而且都是些黑盒子,虽然概念是挺先进,结构好象也很清楚,但还是让我觉的迷迷糊糊,至于嘛,只是想做几个数据驱动的menu而已。还有那个前台的menu类,那么多的Properties,尤其想到menu类也是个黑盒子,一点都不知道,它生成的xhtml会是什么样的,而我只有一点点css知识而已,想到这里连尝试的欲望都没了。还不如自己动手亲自写一个menu呢,网上好象有好多现成的javascript类,比如这个:



Div_css 结构的,虽然没有asp.net 控件那么漂亮,可也很是实用,至少都是透明的。不过后台有点麻烦,当时的想法是:


1 设计一个类sitemap,从数据库里读导航信息,然后存到一个dataset中,


2 在application_start 事件处理函数中 实例化一个sitemap 和一个sqlCachedependency ,插入到cache中。


3 一个dependency的回调函数,以更新cache中的数据


4 从cache中提取数据生成menu。


这样一来可以想象default.master的代码的代码会乱七八糟。非但不太容易写,写好的代码也不太容易复用。而且还有关于cache的很多问题。


肯定有其他办法,asp.net好多东西我都没有接触过。不过现在想想 provider pattern还是不错,一层api连接表示层,一层api连接数据访问层。



被迫学习menu类,希望它不要太让人意外。终于明白为什么开源让那么多人激动,开放透明啊!



/**//*****************************************************
* ypSlideOutMenu
* 3/04/2001
*
* a nice little script to create exclusive, slide-out
* menus for ns4, ns6, mozilla, opera, ie4, ie5 on
* mac and win32. I've got no linux or unix to test on but
* it should(?) work...
*
* Revised:
* - 08/29/2002 : added .hideAll()
* - 04/15/2004 : added .writeCSS() to support more
*



than 30 menus.
*
* --youngpup--
*****************************************************/
ypSlideOutMenu.Registry = []
ypSlideOutMenu.aniLen = 250
ypSlideOutMenu.hideDelay = 1000
ypSlideOutMenu.minCPUResolution = 10
// constructor
function ypSlideOutMenu(id, dir, left, top, width, height)
...{
this.ie = document.all ? 1 : 0
this.ns4 = document.layers ? 1 : 0
this.dom = document.getElementById ? 1 : 0
if (this.ie || this.ns4 || this.dom) ...{
this.id = id
this.dir = dir
this.orientation = dir == "left" || dir == "right" ? "h" : "v"
this.dirType = dir == "right" || dir == "down" ? "-" : "+"
this.dim = this.orientation == "h" ? width : height
this.hideTimer = false
this.aniTimer = false
this.open = false
this.over = false
this.startTime = 0
this.gRef = "ypSlideOutMenu_"+id
eval(this.gRef+"=this")
ypSlideOutMenu.Registry[id] = this
var d = document
var strCSS = "";
strCSS += '#' + this.id + 'Container { visibility:hidden; '
strCSS += 'left:' + left + 'px; '
strCSS += 'top:' + top + 'px; '
strCSS += 'overflow:hidden; z-index:10000; }'
strCSS += '#' + this.id + 'Container, #' + this.id + 'Content { position:absolute; '
strCSS += 'width:' + width + 'px; '
strCSS += 'height:' + height + 'px; '
strCSS += 'clip:rect(0 ' + width + ' ' + height + ' 0); '
strCSS += '}'
this.css = strCSS;
this.load()
}
}
ypSlideOutMenu.writeCSS = function() ...{
document.writeln('
');
}
ypSlideOutMenu.prototype.load = function() ...{
var d = document
var lyrId1 = this.id + "Container"
var lyrId2 = this.id + "Content"
var obj1 = this.dom ? d.getElementById(lyrId1) : this.ie ? d.all[lyrId1] : d.layers[lyrId1]
if (obj1) var obj2 = this.ns4 ? obj1.layers[lyrId2] : this.ie ? d.all[lyrId2] : d.getElementById(lyrId2)
var temp
if (!obj1 || !obj2) window.setTimeout(this.gRef + ".load()", 100)
else ...{
this.container = obj1
this.menu = obj2
this.style = this.ns4 ? this.menu : this.menu.style
this.homePos = eval("0" + this.dirType + this.dim)
this.outPos = 0
this.accelConst = (this.outPos - this.homePos) / ypSlideOutMenu.aniLen / ypSlideOutMenu.aniLen
// set event handlers.
if (this.ns4) this.menu.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT);
this.menu.onmouseover = new Function("ypSlideOutMenu.showMenu('" + this.id + "')")
this.menu.onmouseout = new Function("ypSlideOutMenu.hideMenu('" + this.id + "')")
//set initial state
this.endSlide()
}
}
ypSlideOutMenu.showMenu = function(id)
...{
var reg = ypSlideOutMenu.Registry
var obj = ypSlideOutMenu.Registry[id]
if (obj.container) ...{
obj.over = true
for (menu in reg) if (id != menu) ypSlideOutMenu.hide(menu)
if (obj.hideTimer) ...{ reg[id].hideTimer = window.clearTimeout(reg[id].hideTimer) }
if (!obj.open && !obj.aniTimer) reg[id].startSlide(true)
}
}
ypSlideOutMenu.hideMenu = function(id)
...{
var obj = ypSlideOutMenu.Registry[id]
if (obj.container) ...{
if (obj.hideTimer) window.clearTimeout(obj.hideTimer)
obj.hideTimer = window.setTimeout("ypSlideOutMenu.hide('" + id + "')", ypSlideOutMenu.hideDelay);
}
}
ypSlideOutMenu.hideAll = function()
...{
var reg = ypSlideOutMenu.Registry
for (menu in reg) ...{
ypSlideOutMenu.hide(menu);
if (menu.hideTimer) window.clearTimeout(menu.hideTimer);
}
}
ypSlideOutMenu.hide = function(id)
...{
var obj = ypSlideOutMenu.Registry[id]
obj.over = false
if (obj.hideTimer) window.clearTimeout(obj.hideTimer)
obj.hideTimer = 0
if (obj.open && !obj.aniTimer) obj.startSlide(false)
}
ypSlideOutMenu.prototype.startSlide = function(open) ...{
this[open ? "onactivate" : "ondeactivate"]()
this.open = open
if (open) this.setVisibility(true)
this.startTime = (new Date()).getTime()
this.aniTimer = window.setInterval(this.gRef + ".slide()", ypSlideOutMenu.minCPUResolution)
}
ypSlideOutMenu.prototype.slide = function() ...{
var elapsed = (new Date()).getTime() - this.startTime
if (elapsed > ypSlideOutMenu.aniLen) this.endSlide()
else ...{
var d = Math.round(Math.pow(ypSlideOutMenu.aniLen-elapsed, 2) * this.accelConst)
if (this.open && this.dirType == "-") d = -d
else if (this.open && this.dirType == "+") d = -d
else if (!this.open && this.dirType == "-") d = -this.dim + d
else d = this.dim + d
this.moveTo(d)
}
}
ypSlideOutMenu.prototype.endSlide = function() ...{
this.aniTimer = window.clearTimeout(this.aniTimer)
this.moveTo(this.open ? this.outPos : this.homePos)
if (!this.open) this.setVisibility(false)
if ((this.open && !this.over) || (!this.open && this.over)) ...{
this.startSlide(this.over)
}
}
ypSlideOutMenu.prototype.setVisibility = function(bShow) ...{
var s = this.ns4 ? this.container : this.container.style
s.visibility = bShow ? "visible" : "hidden"
}
ypSlideOutMenu.prototype.moveTo = function(p) ...{
this.style[this.orientation == "h" ? "left" : "top"] = this.ns4 ? p : p + "px"
}
ypSlideOutMenu.prototype.getPos = function(c) ...{
return parseInt(this.style[c])
}
ypSlideOutMenu.prototype.onactivate = function() ...{ }
ypSlideOutMenu.prototype.ondeactivate = function() ...{ }





添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.