2010-01-31 8 views
2

J'ai une classe qui récupère les données de DB.Liaison de tables LinqToSql au répéteur

[Table(Name = "Ilanlar")] 
public class Ilan 
{ 

    [Column(Name="ilan_id" ,IsPrimaryKey = true)] 
    public int M_ilan_id; 

    [Column(Name="refVerenUser_id")] 
    public int M_refVerenUser_id; 
} 

Et je lie les données proviennent de DB via la classe ci-dessus.

private void ItemsGet() 
    { 
     PagedDataSource objPds = new PagedDataSource(); 
     objPds.DataSource = f_IlanlariGetir(CurrentPage); 
     objPds.AllowPaging = true; 
     objPds.PageSize = 3; 

     objPds.CurrentPageIndex = CurrentPage; 

     rptIlanlar.DataSource = objPds; //rptIlanlar = asp:Repeater 
     rptIlanlar.DataBind(); 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     ItemsGet(); 
    } 

    private System.Collections.IEnumerable f_IlanlariGetir(int p) 
    { 
     Context context = new Context(DAO.dbYaban.ConnectionString); 

     return context.GetTable<Ilan>(); 
    } 

Mais le résultat est IEnumerable mais j'ai besoin de quelque chose comme DataSet. Je reçois cette erreur:

Cannot compute Count for a data source that does not implement ICollection.

J'ai trouvé une bonne explication sur cette erreur, il est:

The underlying DataSource has to support the ICollection interface in order for the grid to perform automatic paging. ICollection requires a class to implement a Count property. ArrayList and DataView both support the interface, so you could use them as DataSources.Other classes only support the IEnumerable interface. This allows them to be used as a DataSource but not as a paged data source. SqlDataReader would be an example of such a class. Reference

Mais je dois lier répéteur avec les résultats de LINQ aux tables sql. Que devrais-je faire?

Répondre

1

Au lieu de lier directement à la requête, essayez:

return context.GetTable<Ilan>().ToList(); 
Questions connexes