65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 jQuery Repeater 展开页面预览,类似 Google

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2011 年 12 月 1 日

CPOL

2分钟阅读

viewsIcon

15274

为了更快地查看,我们可以只在 Repeater 中显示部分数据,而更详细的信息可以通过子视图实现。

原始帖子可以在 这里 找到。

简介/目录

由于时间有限,不能保证在多个博客文章中同步。在以下地址,您可以查看最新的内容,希望您能理解

下载示例:JQueryElementDemo-en.zip,目录为 /repeater/Default.aspx

本文将详细解释如何在 Repeater 控件中使用子视图,目录如下

准备

请查看30 分钟掌握 ASP.NET jQuery Repeater中的准备部分。

定义子视图示例

Repeater 中显示的 Repeater 被称为子视图,子视图是子视图示例的副本,并根据条件显示不同的数据。定义子视图示例没有特殊之处,例如

<je:Repeater ID="<child view ID>" runat="server"
 FilterField="<child view search field>">

</je:Repeater>

<je:Repeater ID="pictureRepeater" runat="server"
 FilterField="['url']"
 FillAsync-Url="webservice.asmx"
 FillAsync-MethodName="GetGooglePicture">
 <ItemTemplate>
  <div>
   <span class="url">#{url}</span>
   <br />
   <br />
   #{picture}
  </div>
 </ItemTemplate>
</je:Repeater>

在大多数情况下,您需要为子视图示例定义属性 FilterField,即用于搜索子视图数据的条件,在上面的代码中,我们添加了一个 URL 作为条件,那么服务器端的方法可以写成

[WebMethod]
public SortedDictionary<string, object> GetGooglePicture ( string url )
{
 // Return JSON
}

因为这里我们只返回一行,所以您不必添加 pageindexpagesize 参数。

关于如何返回 JSON,请参考 在不同的 .NET 版本中返回 JSON。此示例的所有代码都是使用 .NET 4.0 编写的。

切换子视图

如果需要在 Repeater 控件中切换、关闭、打开子视图,可以使用 shiftviewcollapseviewexpandview 三个方法,例如

// je-<javascript event name>="shiftview,'<child view ID>'[,<search field value n>]"

<div id="list">
 <je:Repeater ID="googleRepeater" runat="server"
  Selector="'#list'" PageSize="2" IsVariable="true"
  FillAsync-Url="webservice.asmx"
  FillAsync-MethodName="SearchGoogle">
  <ItemTemplate>

   <div class="picture">
    <div
     je-button="label='More';"
     je-onclick="shiftview,'pictureRepeater','#{url}'">
    </div>
    <div je-id="pictureRepeater" style="display: none;">
    </div>
   </div>
  
  </ItemTemplate>

 </je:Repeater>
</div>

shiftview 为例,第一个参数是子视图的 ID,后面的参数是用于搜索子视图数据的条件,在示例中,字段 URL 是一个条件,对应于子视图示例的 FilterField 属性中的 URL。如果存在更多条件,您可以继续添加,但条件的顺序必须与子视图示例的 FilterField 属性相同。

expandview 方法与 shiftview 类似,expandview 将打开子视图,而 shiftview 将切换子视图的打开状态。

collapseview 方法将关闭子视图,它不需要传递条件。

默认情况下,当首次打开子视图时,它将自动调用 fill 方法来获取数据,然后 open 操作将不再刷新数据。

定义一个容器

除了定义子视图之外,您还需要在行模板中定义子视图的容器

// je-id="<child view ID>"
<ItemTemplate>
 <div class="picture">
  <div je-id="pictureRepeater" style="display: none;">
  </div>
 </div>
</ItemTemplate>

je-id 设置为子视图的 ID,该元素可以绑定为子视图的容器,子视图将出现在目标容器中。

我们通过 style="display: none;" 使容器在开始时处于隐藏状态,因为默认情况下子视图是关闭的。

© . All rights reserved.