欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS實現(xiàn)在Repeater控件中創(chuàng)建可隱藏區(qū)域的代碼

 更新時間:2010年09月16日 00:20:33   作者:  
在WEB應(yīng)用中,如何才能使應(yīng)用高效率呢?如何才能吸引用戶呢?這的確是個大學(xué)問,頁面的內(nèi)容,色搭配等都十分重要。但不可忽視的是,多數(shù)情況下,對于數(shù)據(jù)的呈現(xiàn)方式也是十分重要的。
由于web應(yīng)用的規(guī)模不斷增大,數(shù)據(jù)也越來越多了,有時候,由于在一個頁面同時顯示的數(shù)據(jù)太多,從而造成頁面的不美觀,用戶因此也會感到厭倦和操作困難。因此,本文將介紹利用repeater控件的隱藏區(qū)域,以達(dá)到較好的數(shù)據(jù)顯示效果。

    防止數(shù)據(jù)過多加載有很多方法,比如采用數(shù)據(jù)分頁的方法,又或者采用master/detail的方式,就是先顯示每條數(shù)據(jù)的主要內(nèi)容,而對于詳細(xì)數(shù)據(jù),用戶只需要點(diǎn)detail的鏈接就可以了。本文將介紹另外一種方式來顯示數(shù)據(jù),它采用折疊的隱藏方式,當(dāng)用戶需要看每條記錄的詳細(xì)描述時,不需要另外打開鏈接窗口,而直接在原數(shù)據(jù)記錄的下方,呈現(xiàn)出原先隱藏的數(shù)據(jù)詳細(xì)資料。這樣一來,方便了用戶的操作。我們先來看下其實際效果(http://aspnet.4guysfromrolla.com/demos/collapsibleRepeater.aspx)。 接下來,我們看如何在repeater中實現(xiàn)其效果。

    要實現(xiàn)上面的效果,我們必須采用客戶端的腳本技術(shù),從而實現(xiàn)隱藏或展示某個區(qū)域。而在IE 4.x后,是可以實現(xiàn)該技術(shù)的。比如,<div>標(biāo)記內(nèi)的內(nèi)容,當(dāng)用戶點(diǎn)擊時可以動態(tài)地隱藏起來,而<p>標(biāo)記內(nèi)容的內(nèi)容,也可以當(dāng)用戶移動鼠標(biāo)到某特定區(qū)域時顯示出來。而其中的關(guān)鍵之處,在于其display和visibility的CSS風(fēng)格屬性。下面的代碼顯示了其使用方法,當(dāng)用戶點(diǎn)擊HIDE CONTENT按鈕時,則會隱藏原本顯示的文本,當(dāng)點(diǎn)擊show content時,又會顯示原先的文本了。

復(fù)制代碼 代碼如下:

<script language="JavaScript">
function showHideContent(id, show)
{
 var elem = document.getElementById(id);
 if (elem)
 {
  if (show)
  {
   elem.style.display = 'block';
   elem.style.visibility = 'visible';
  }
  else
  {
   elem.style.display = 'none';
   elem.style.visibility = 'hidden';
  }
 }
}
</script>
<div id="someRegion">
 This text will be displayed or hidden when clicking the appropriate button below...
</div>
<input type="button" value = "Hide Content"
 onclick="showHideContent('someRegion', false);">
<input type="button" value = "Show Content" onclick="showHideContent('someRegion', true);">

  在上面的javscript代碼中,充分利用了HTML元素的display和visiblity屬性,而且要注意,這兩個屬性應(yīng)該同時使用。首先在button按鈕的onclick事件中,調(diào)用了自定義的javscript寫的函數(shù)showhidecontent,該函數(shù)有兩個參數(shù),id和show,id表示要顯示或者隱藏的區(qū)域的名稱,比如該例子中,要顯示或隱藏的區(qū)域是<div>標(biāo)記內(nèi)的文本,show為布爾值,決定是否隱藏或顯示該區(qū)域。而在showhidecontent函數(shù)中,則根據(jù)show的值,控制display和visiblity屬性。

  明白了上面例子的道理后,下面就可以在repeater控件中應(yīng)用了。比如,我們要創(chuàng)建一個FAQ問答錄,其中有很多用戶要詢問的問題,則使用上面的方法,可以先將用戶的問題使用repeater控件羅列出來,之后當(dāng)用戶點(diǎn)擊該問題時,則會顯示出隱藏的回答,十分方便。Repeater的代碼片段如下:
復(fù)制代碼 代碼如下:

<asp:Repeater id="rptFAQs" runat="server">
<ItemTemplate>
 <h2><%# DataBinder.Eval(Container.DataItem, "Description") %></h2><br />
 <b>Submitted By:</b> <%# DataBinder.Eval(Container.DataItem, "SubmittedByName") %><br />
 <b>Views:</b> <%# DataBinder.Eval(Container.DataItem, "ViewCount", "{0:d}") %><br />
 <b>FAQ:</b><br />
 <%# DataBinder.Eval(Container.DataItem, "Answer") %>
</ItemTemplate>
</asp:Repeater>

  我們可以看到,上面的代碼只是描述了靜態(tài)的一個repeater。接下來,我們要在repeater的模版列上進(jìn)行一下修改,以滿足要求。
首先,我們?yōu)槊恳粭l記錄都創(chuàng)建兩個<div>標(biāo)記,一個顯示FAQ的問題,另一個則顯示問題的答案,而且要為每一個<div>標(biāo)記賦值一個唯一的id,每條記錄中,顯示問題的<div>標(biāo)記的id記作h index(index為Repeater控件中每一項的id號,利用itemindex),而顯示答案的<div>標(biāo)記的id記作dindex。代碼如下:
復(fù)制代碼 代碼如下:

<script language="JavaScript">
function ToggleDisplay(id)
{
 var elem = document.getElementById('d' + id);
 if (elem)
 {
  if (elem.style.display != 'block')
  {
   elem.style.display = 'block';
   elem.style.visibility = 'visible';
  }
  else
  {
   elem.style.display = 'none';
   elem.style.visibility = 'hidden';
  }
 }
}
</script>
<style>
.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; }
</style>

 <asp:Repeater id="rptFAQs" runat="server">
 <ItemTemplate>
  <div id='h<%# DataBinder.Eval(Container, "ItemIndex") %>' class="header"
onclick='ToggleDisplay(<%# DataBinder.Eval(Container, "ItemIndex") %>);'>
   <%# DataBinder.Eval(Container.DataItem, "Description") %>
  </div>

  <div id='d<%# DataBinder.Eval(Container, "ItemIndex") %>' class="details">
   <b>Submitted By:</b> <%# DataBinder.Eval(Container.DataItem, "SubmittedByName") %><br />
   <b>Views:</b> <%# DataBinder.Eval(Container.DataItem, "ViewCount", "{0:d}") %><br />
   <b>FAQ:</b><br />
   <%# DataBinder.Eval(Container.DataItem, "Answer") %>
  </div>
 </ItemTemplate>
</asp:Repeater>

  我們重點(diǎn)來看下后半部分的代碼,其中
<div id='h<%# DataBinder.Eval(Container, "ItemIndex") %>' class="header"
onclick='ToggleDisplay(<%# DataBinder.Eval(Container, "ItemIndex") %>);'>會將每條記錄的問題部分,包裹在類似<div id=h1>,<div id=h2>之類的標(biāo)記內(nèi),當(dāng)點(diǎn)擊時,則調(diào)用toggledisplay函數(shù),在該函數(shù)內(nèi),看傳入的參數(shù)是否是需要顯示的區(qū)域(注意,通過
var elem = document.getElementById('d' + id);)一句進(jìn)行判斷,是的話則設(shè)置display和visiblity屬性顯示,否則不顯示。

相關(guān)文章

  • javascript下拉列表中顯示樹形菜單的實現(xiàn)方法

    javascript下拉列表中顯示樹形菜單的實現(xiàn)方法

    這篇文章主要介紹了javascript下拉列表中顯示樹形菜單的實現(xiàn)方法,需要的朋友可以參考下
    2015-11-11
  • js fromCharCode輸出26個字母的代碼

    js fromCharCode輸出26個字母的代碼

    這個代碼比較簡單主要是用到了fromCharCode的特性
    2008-11-11
  • JavaScript設(shè)計模式經(jīng)典之工廠模式

    JavaScript設(shè)計模式經(jīng)典之工廠模式

    工廠模式定義一個用于創(chuàng)建對象的接口,這個接口由子類決定實例化哪一個類。接下來通過本文給大家介紹JavaScript設(shè)計模式經(jīng)典之工廠模式,感興趣的朋友一起學(xué)習(xí)吧
    2016-02-02
  • ZeroClipboard.js使用一個flash復(fù)制多個文本框

    ZeroClipboard.js使用一個flash復(fù)制多個文本框

    這篇文章主要為大家詳細(xì)介紹了ZeroClipboard.js使用一個flash復(fù)制多個文本框,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 淺析javascript中的Event事件

    淺析javascript中的Event事件

    本文主要對javascript中的(Event)事件進(jìn)行介紹,文章篇尾舉了幾個案例:方塊隨著鼠標(biāo)移動;輸入框文字提示;仿select控件;留言本;自定義右鍵菜單;鍵盤控制div運(yùn)動。需要的朋友可以看下
    2016-12-12
  • JS對大量數(shù)據(jù)進(jìn)行多重過濾的方法

    JS對大量數(shù)據(jù)進(jìn)行多重過濾的方法

    今天在工作中遇到一個問題,當(dāng)前端通過Ajax從后端取得了大量的數(shù)據(jù),需要根據(jù)一些條件過濾,但是發(fā)現(xiàn)寫的過濾方法有問題,后來仔細(xì)的查找問題,通過網(wǎng)上的資料終于解決了這個問題,現(xiàn)在將解決的過程以及解決方法分享給大家,有需要的朋友們可以參考借鑒。
    2016-11-11
  • 小程序?qū)崿F(xiàn)多選框功能

    小程序?qū)崿F(xiàn)多選框功能

    這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)多選框功能,小程序?qū)崿F(xiàn)單選全選多選刪除操作,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • 詳解JavaScript實現(xiàn)動態(tài)的輪播圖效果

    詳解JavaScript實現(xiàn)動態(tài)的輪播圖效果

    這篇文章主要介紹了JavaScript實現(xiàn)動態(tài)的輪播圖效果,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 一些老手都不一定知道的JavaScript技巧

    一些老手都不一定知道的JavaScript技巧

    這篇文章主要介紹了一些老手都不一定知道的JavaScript技巧,需要的朋友可以參考下
    2014-05-05
  • 一文教你實現(xiàn)JavaScript防抖優(yōu)化代碼

    一文教你實現(xiàn)JavaScript防抖優(yōu)化代碼

    在我們前端編程中,假如我們要給后端發(fā)送請求,萬一手抖多點(diǎn)了幾次,多發(fā)送了幾遍怎么辦,那就得用防抖處理,下面小編就來教大家如何實現(xiàn)防抖吧
    2023-11-11

最新評論