在ASP.NET中,jQueryRepeater控件是一个非常实用的工具,它可以帮助以一种动态的方式显示数据。本文将详细介绍如何使用Repeater控件中的子视图,包括如何定义子视图样本、切换子视图以及定义容器。
在开始之前,请确保已经熟悉了ASP.NETjQueryRepeater控件的基础知识。如果需要,可以参考《30分钟掌握ASP.NET jQuery Repeater》一文进行准备。
在Repeater控件中显示的子视图,被称为子视图。子视图是子视图样本的副本,并且可以根据条件显示不同的数据。定义子视图样本没有特别之处,例如:
<je:Repeater ID="<子视图ID>" runat="server" FilterField="<子视图搜索字段>">
<ItemTemplate>
<div>
<span class="url">#{url}</span>
<br/>
<br/>
#{picture}
</div>
</ItemTemplate>
</je:Repeater>
在大多数情况下,需要为子视图样本定义属性FilterField,即用于搜索子视图数据的条件。在上面的代码中,添加了一个url作为条件,然后可以在服务器端编写方法:
[WebMethod]
public SortedDictionary<string, object> GetGooglePicture(string url)
{
// 返回JSON
}
因为这里只返回一行,所以不需要添加pageindex和pagesize参数。关于如何返回JSON,请参考《不同.NET版本中返回JSON》。所有示例代码都是使用.NET 4.0编写的。
如果需要在Repeater控件中切换、关闭、开启子视图,可以使用shiftview、collapseview、expandview三个方法,例如:
<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操作将不再刷新数据。
除了定义子视图之外,还需要在行模板中定义子视图的容器:
<ItemTemplate>
<div class="picture">
<div je-id="pictureRepeater" style="display: none;">
</div>
</div>
</ItemTemplate>