2013-05-31 22 views
0

我有下面的代碼,我可以計算其爲何無效參數:PaginatedList爲MVC 3應用程序分頁?錯誤:有一些無效參數

AuditDAL ad = new AuditDAL(); 
var agencies = ad.SearchAgencies("Ak001", ""); 

string col = param.sColumns.Split(',')[param.iSortCol_0]; 
string orderby = col + " " + param.sSortDir_0; 

//爲的「AMS.Helper.PaginatedList.PaginatedList(System.Linq的最佳重載方法匹配。 IQueryable的,INT,INT)」有一些無效參數C:\ NexGen公司\ AMS \ DEV \來源\ AMS \ \控制器AuditController.cs

var qry = new PaginatedList<AuditAgency>(agencies, param.iDisplayStart, param.iDisplayLength); 

PaginatedList代碼:

namespace AMS.Helper 
{ 
    public class PaginatedList<T> : List<T> { 

     public int PageIndex { get; private set; } 
     public int PageSize { get; private set; } 
     public int TotalCount { get; private set; } 
     public int TotalPages { get; private set; } 

     public PaginatedList(IQueryable<T> source, int pageIndex, int pageSize) { 
      PageIndex = pageIndex; 
      PageSize = pageSize; 
      TotalCount = source.Count(); 
      TotalPages = (int) Math.Ceiling(TotalCount/(double)PageSize); 

      this.AddRange(source.Skip(PageIndex * PageSize).Take(PageSize)); 
     } 

     public bool HasPreviousPage { 
      get { 
       return (PageIndex > 0); 
      } 
     } 

     public bool HasNextPage { 
      get { 
       return (PageIndex+1 < TotalPages); 
      } 
     } 
    } 
} 

搜索代碼:

public IEnumerable<AuditAgency> SearchAgencies(string ori, string name) 
     { 
      List<AuditAgency> agencies = new List<AuditAgency>(); 
      using (var conn = new SqlConnection(_connectionString)) 
      { 
       var com = new SqlCommand(); 
       com.Connection = conn; 
       com.CommandType = CommandType.StoredProcedure; 
       string term = "Ori"; 

       if (!String.IsNullOrEmpty(ori)) 
       { 
        term = "Ori"; 
        com.Parameters.Add(new SqlParameter 
        { 
         ParameterName = "@ORI", 
         Value = ori 
        }); 
       } 
       if (!String.IsNullOrEmpty(name)) 
       { 
        term = "legal_name"; 
        com.Parameters.Add(new SqlParameter 
        { 
         ParameterName = "@Name", 
         Value = name 
        }); 
       } 
       com.CommandText = "Audit_Get_Agency_List"; 
       var adapt = new SqlDataAdapter(); 
       adapt.SelectCommand = com; 
       var dataset = new DataSet(); 
       adapt.Fill(dataset); 

       agencies = (from c in dataset.Tables[0].AsEnumerable() 
          select new AuditAgency() 
          { 
           Agency_ID = Convert.ToInt32(c["Agency_Id"]), 
           Agency_Name = c["Agency_Name"].ToString(), 
           Agency_Ori = c["ORI"].ToString(), 
           COPSAuditNumber = c["COPSAuditNumber"].ToString(), 
           OIGAuditNumber = c["OIGAuditNumber"].ToString() 
          }).ToList<AuditAgency>(); 

       return agencies; 
      } 

     } 

回答

0

錯誤應該告訴你從哪裏開始。

如果你火起來的調試器,我想你會發現機構是IEnumberable,而不是一個IQueryable

由IQueryable的改變SearchAgencies的返回類型的IEnumerable

或可選擇地改正,您可以將PaginatedList的類型更改爲接受IEnumberables而不是IQueryables。這可能是更安全的作爲IQueryable的自IEnumerable

繼承(見 http://msdn.microsoft.com/en-us/library/system.linq.iqueryable.aspxDifferences between IQueryable, List, IEnumerator? 兩者之間的差)