栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

JS实现在Repeater控件中创建可隐藏区域的代码

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JS实现在Repeater控件中创建可隐藏区域的代码

由于web应用的规模不断增大,数据也越来越多了,有时候,由于在一个页面同时显示的数据太多,从而造成页面的不美观,用户因此也会感到厌倦和操作困难。因此,本文将介绍利用repeater控件的隐藏区域,以达到较好的数据显示效果。

    防止数据过多加载有很多方法,比如采用数据分页的方法,又或者采用master/detail的方式,就是先显示每条数据的主要内容,而对于详细数据,用户只需要点detail的链接就可以了。本文将介绍另外一种方式来显示数据,它采用折叠的隐藏方式,当用户需要看每条记录的详细描述时,不需要另外打开链接窗口,而直接在原数据记录的下方,呈现出原先隐藏的数据详细资料。这样一来,方便了用户的操作。我们先来看下其实际效果(http://aspnet.4guysfromrolla.com/demos/collapsibleRepeater.aspx)。 接下来,我们看如何在repeater中实现其效果。

    要实现上面的效果,我们必须采用客户端的脚本技术,从而实现隐藏或展示某个区域。而在IE 4.x后,是可以实现该技术的。比如,<div>标记内的内容,当用户点击时可以动态地隐藏起来,而<p>标记内容的内容,也可以当用户移动鼠标到某特定区域时显示出来。而其中的关键之处,在于其display和visibility的CSS风格属性。下面的代码显示了其使用方法,当用户点击HIDE CONTENT按钮时,则会隐藏原本显示的文本,当点击show content时,又会显示原先的文本了。

复制代码 代码如下:


 This text will be displayed or hidden when clicking the appropriate button below...

 onclick="showHideContent('someRegion', false);">


  在上面的javscript代码中,充分利用了HTML元素的display和visiblity属性,而且要注意,这两个属性应该同时使用。首先在button按钮的onclick事件中,调用了自定义的javscript写的函数showhidecontent,该函数有两个参数,id和show,id表示要显示或者隐藏的区域的名称,比如该例子中,要显示或隐藏的区域是标记内的文本,show为布尔值,决定是否隐藏或显示该区域。而在showhidecontent函数中,则根据show的值,控制display和visiblity属性。

  明白了上面例子的道理后,下面就可以在repeater控件中应用了。比如,我们要创建一个FAQ问答录,其中有很多用户要询问的问题,则使用上面的方法,可以先将用户的问题使用repeater控件罗列出来,之后当用户点击该问题时,则会显示出隐藏的回答,十分方便。Repeater的代码片段如下:
复制代码 代码如下:


 <%# DataBinder.eval(Container.DataItem, "Description") %>

 Submitted By: <%# DataBinder.eval(Container.DataItem, "SubmittedByName") %>

 Views: <%# DataBinder.eval(Container.DataItem, "ViewCount", "{0:d}") %>

 FAQ:

 <%# DataBinder.eval(Container.DataItem, "Answer") %>



  我们可以看到,上面的代码只是描述了静态的一个repeater。接下来,我们要在repeater的模版列上进行一下修改,以满足要求。
首先,我们为每一条记录都创建两个标记,一个显示FAQ的问题,另一个则显示问题的答案,而且要为每一个标记赋值一个唯一的id,每条记录中,显示问题的标记的id记作h index(index为Repeater控件中每一项的id号,利用itemindex),而显示答案的标记的id记作dindex。代码如下:
复制代码 代码如下:


.header { font-size: larger; font-weight: bold; cursor: hand; cursor:pointer;
background-color:#cccccc; font-family: Verdana; }
.details { display:none; visibility:hidden; background-color:#eeeeee;
font-family: Verdana; }


 
 
  ' class="header"
onclick='ToggleDisplay(<%# DataBinder.eval(Container, "ItemIndex") %>);'>
   <%# DataBinder.eval(Container.DataItem, "Description") %>
  

  ' class="details">
   Submitted By: <%# DataBinder.eval(Container.DataItem, "SubmittedByName") %>

   Views: <%# DataBinder.eval(Container.DataItem, "ViewCount", "{0:d}") %>

   FAQ:

   <%# DataBinder.eval(Container.DataItem, "Answer") %>
  
 



  我们重点来看下后半部分的代码,其中
' class="header"
onclick='ToggleDisplay(<%# DataBinder.eval(Container, "ItemIndex") %>);'>会将每条记录的问题部分,包裹在类似,之类的标记内,当点击时,则调用toggledisplay函数,在该函数内,看传入的参数是否是需要显示的区域(注意,通过
var elem = document.getElementById('d' + id);)一句进行判断,是的话则设置display和visiblity属性显示,否则不显示。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/115312.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号