Repeater SelectMethod - 如何获取返回的项目数?

时间:2014-02-05 10:31:47

标签: c# asp.net

我正在使用asp.net转发器的SelectMethod来返回我的对象​​。是否可以获得退回的物品数量?

我最初使用的是<%#: Items.Count %>但很快意识到没有返回正确数量的对象。

<asp:Repeater ID="docResults" runat="server" 
     ItemType="ArchiveViewer.Models.Document" 
     SelectMethod="GetSearchResults" >
     <HeaderTemplate>
         <p class="result-info">
             Found <strong> <%#: Items.Count %> </strong> results.
         </p>
     </HeaderTemplate>
     <ItemTemplate>                                  
        <div>
           Title: <%#:Item.Metadata.Title %>
        </div>  
        <div>
            Author: <%#:Item.Metadata.Author %>
         </div> 
     </ItemTemplate>
  </asp:Repeater>

编辑:根据要求:我的GetSearchResults方法......

[WebMethod]
public IEnumerable<Document> GetSearchResults(
          [QueryString("query")] string query, 
          [QueryString("type")] string queryType)
    {
        IEnumerable<Document> results = null;
        try
        {     
            ArchiveSearcher searcher = new ArchiveSearcher();
            results = searcher.SearchMetadata(query, queryType, 1, 20);

            if (results.Count() > 0)
            {
                // Display the first search result in the viewer
                Document firstResult = results.FirstOrDefault();
                hfCurrentDocId.Value = firstResult.DocumentId.ToString();
                hfImageDir.Value = firstResult.FolderPath;
                hfObjectData.Value = firstResult.JSONPath;
            }
        }
        catch (Exception ex)
        {
            // Log the exception.
            ArchiveViewer.Logic.ExceptionUtility.LogException(ex, 
                "GetSearchResults in Search.aspx.cs");
        }          
        return results;
    }

谢谢!

1 个答案:

答案 0 :(得分:0)

如果使用标签和ID替换计数控件:

<HeaderTemplate>
  <asp:Label ID="TotalCount" runat="server" />

数据绑定后,您可以获取转发器项目的数量,从控件中获取TotalCount标签。有些人使用的方法如下:

Repeater1.Controls(0).FindControl("TotalCount")

提取它,并在数据绑定后设置它。请记住,Repeater Items集合中包含标题,因此您只想计算转发器项。要获取项目数,请执行以下操作:

Repeater1.Items.Where(i => i.ItemType == ListItemType.Item)

您必须包含要计算的项目类型,提及here