2012-01-30 37 views
3

我有一個ASP.NET的ListView與DataPager的按本代碼:錯誤:「容量小於當前大小」與ASP.NET DataPager控件

 <asp:ListView ID="TicketsPerPersonListView" runat="server" DataSourceID="ObjectDataSource1"> 
     <EmptyDataTemplate> 
      -- No Records Found -- 
     </EmptyDataTemplate> 
     <ItemTemplate> 
      <tr style="display: table-row;"> 
       <td> 
        <a href="viewticket.aspx?id=<%#Eval("ticket_id")%>">#<%# Eval("TicketID")%>- 
         <%# Eval("ShortDesc")%></a> 
       </td> 
       <td> 
        <%# Eval("StatusName")%> 
       </td> 
       <td style="text-align: right; padding-right: 60px;"> 
        <%# Eval("StatusDescription")%> 
       </td> 
       <td style="text-align: right; padding-right: 60px;"> 
        <%# Eval("TimeLastAction")%> 
       </td> 
      </tr> 
     </ItemTemplate> 
     <LayoutTemplate> 
      <table> 
       <thead> 
        <tr> 
         <th> 
          Title 
         </th> 
         <th style="text-align: right; padding-right: 60px;"> 
          Current Status 
         </th> 
         <th style="text-align: right; padding-right: 60px;"> 
          Latest Action 
         </th> 
         <th style="text-align: right; padding-right: 60px;"> 
          Last Viewed 
         </th> 
        </tr> 
       </thead> 
       <tfoot> 
        <tr> 
         <td colspan="5"> 
          <div class="pagination"> 
           <asp:DataPager ID="TicketsPerPersonDataPager" runat="server" PagedControlID="TicketsPerPersonListView" 
            PageSize="10"> 
            <Fields> 
             <asp:NextPreviousPagerField FirstPageText="&lt;&lt;" ShowFirstPageButton="True" ShowNextPageButton="False" 
              ShowPreviousPageButton="False" /> 
             <asp:NumericPagerField CurrentPageLabelCssClass="graybutton pagelink active" NumericButtonCssClass="graybutton pagelink" /> 
             <asp:NextPreviousPagerField LastPageText="&gt;&gt;" ShowLastPageButton="True" ShowNextPageButton="False" 
              ShowPreviousPageButton="False" /> 
            </Fields> 
           </asp:DataPager> 
          </div> 
         </td> 
        </tr> 
       </tfoot> 
       <tbody> 
        <asp:PlaceHolder runat="server" ID="itemPlaceholder"></asp:PlaceHolder> 
        <tr style="display: table-row;"> 
        </tr> 
       </tbody> 
      </table> 
     </LayoutTemplate> 
    </asp:ListView> 
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" EnablePaging="True" SelectMethod="FindByUserID" 
     TypeName="Xyratex.XCS.Services.TicketService" StartRowIndexParameterName="startRowIndex" 
     MaximumRowsParameterName="maximumRows" SelectCountMethod="CountByUserID"> 
     <SelectParameters> 
      <asp:Parameter Name="userID" DbType="Int64" DefaultValue="79" /> 
      <asp:ControlParameter Name="custID" ControlID="DDCaller" ConvertEmptyStringToNull="True" 
       DefaultValue="" /> 
      <asp:ControlParameter Name="company" ControlID="DDCompany" ConvertEmptyStringToNull="True" 
       DefaultValue="" /> 
      <asp:ControlParameter Name="owner" ControlID="DDOwner" ConvertEmptyStringToNull="True" 
       DefaultValue="" /> 
      <asp:ControlParameter Name="action" ControlID="DDAction" ConvertEmptyStringToNull="True" 
       DefaultValue="" /> 
      <asp:ControlParameter Name="status" ControlID="DDCurrentStatus" ConvertEmptyStringToNull="True" 
       DefaultValue="" /> 
     </SelectParameters> 
    </asp:ObjectDataSource> 

的VB.NET代碼提供了與數據將ObjectDataSource因此:

''' <summary> 
''' Finds all the <see cref="Xyratex.XCS.Model.Tickets.Ticket" /> objects belonging to the specified user ID 
''' </summary> 
''' <param name="userID">The id of the user to find tickets for</param> 
''' <param name="startRowIndex">The starting index of the portion of the recordset</param> 
''' <param name="maximumRows">The maximum amount of rows to return</param> 
''' <param name="custID">The id of the customer to find tickets for</param> 
''' <param name="company">The company name to find tickets for</param> 
''' <param name="owner">The owner to find tickets for</param> 
''' <param name="action">The action to find tickets for</param> 
''' <param name="status">The status of tickets to find.</param> 
''' <returns>A <see cref="System.Collections.Generic.IList(Of Xyratex.XCS.Model.Tickets.Ticket)" /> object</returns> 
''' <remarks>XY01\rpenfold 30 January 2012</remarks> 
Public Function FindByUserID(ByVal userID As Long, 
          ByVal startRowIndex As Long, 
          ByVal maximumRows As Long, 
          ByVal custID As Long?, 
          ByVal company As String, 
          ByVal owner As Integer?, 
          ByVal action As Char?, 
          ByVal status As Long?) As List(Of LightWeightTicket) Implements ITicketRepository.FindByUserID 
    'Start a new session and run the query 
    Using session As NHibernate.ISession = SessionFactory.GetNewSession() 
     Dim query As NHibernate.IQuery = session.GetNamedQuery("Select_AllTickets_ByUserID_RyanTest") 
     query.SetInt64("user_id", userID) 
     Select Case custID.HasValue 
      Case True 
       query.SetInt64("cust_id", custID.Value) 
      Case False 
       query.SetString("cust_id", Nothing) 'SetString makes it NULL 
     End Select 
     Select Case String.IsNullOrWhiteSpace(company) 
      Case True 
       query.SetString("company", Nothing) 
      Case False 
       query.SetString("company", company) 'SetString makes it NULL 
     End Select 
     Select Case owner.HasValue 
      Case True 
       query.SetInt32("owner", owner.Value) 
      Case False 
       query.SetString("owner", Nothing) 'SetString makes it NULL 
     End Select 
     Select Case action.HasValue 
      Case True 
       query.SetCharacter("action", action.Value) 
      Case False 
       query.SetString("action", Nothing) 'SetString makes it NULL 
     End Select 
     Select Case status.HasValue 
      Case True 
       query.SetInt64("status", status.Value) 
      Case False 
       query.SetString("status", Nothing) 'SetString makes it NULL 
     End Select 
     query.SetInt64("startRowIndex", startRowIndex) 
     query.SetInt64("maximumRows", maximumRows) 
     Return New List(Of LightWeightTicket)(query.List(Of LightWeightTicket)()) 
    End Using 
End Function 

當我加載頁面時,收到錯誤「容量小於當前大小」。堆棧跟蹤是每從而:

[ArgumentOutOfRangeException: capacity was less than the current size. 

參數名:值] System.Collections.ArrayList.set_Capacity(的Int32值)9360651個 System.Web.UI.WebControls.ListView.CreateChildControls(IEnumerable的數據源,布爾dataBinding)+712 System.Web.UI.WebControls.ListView.PerformDataBinding(IEnumerable data)+35 System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data)+128 System.Web.UI.DataSourceView.Select (DataSourceSelectArguments參數,DataSourceViewSelectCallback回調)+33 System.Web.UI.WebControls.DataBoundControl.PerformSelect()+143 System.Web.UI.WebControls.ListView.PerformSelect()113 System.Web.UI.WebControls.BaseDataBoundControl.DataBind()74 System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound()66 系統.Web.UI.WebControls.ListView.CreateChildControls()+55 System.Web.UI.Control.EnsureChildControls()+10 System.Web.UI.Control.PreRenderRecursiveInternal()+42 System.Web.UI.Control .PreRenderRecursiveInternal()175 System.Web.UI.Control.PreRenderRecursiveInternal()175 System.Web.UI.Page.ProcessRequestMain(布爾includeStagesBeforeAsyncPoint,布爾includeStagesAfterAsyncPoint)2496

是否一個你知道該怎麼辦?

由於提前,

瑞安

+0

這與問題無關,但爲什麼你總是使用Select Case?這是更簡單和容易的眼睛:'如果owner.HasValue然後...否則...如果' – 2012-01-30 19:36:18

+0

我更喜歡Select Case:o) – 2012-01-31 11:50:15

回答

3

我解決它!

計數方法返回一個System.Int64。當這被修改爲System.Int32時,它就起作用了!

+0

謝謝!我剛剛遇到同樣的問題!它幫助了我。 – Sergey 2012-11-20 19:13:31