将LinqToSql表绑定到Repeater

时间:2010-01-31 11:58:51

标签: c# asp.net ienumerable repeater icollection

我有一个从DB中检索数据的类。

[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;
}

我绑定数据来自db通过上面的类。

    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>();
    }

但结果是IEnumerable但我需要像DataSet这样的东西。 我收到了这个错误:

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

我找到了关于这个错误的好解释,它是:

  

底层DataSource必须支持ICollection接口   命令网格执行自动分页。 ICollection需要一个   用于实现Count属性的类。 ArrayList和DataView都有   支持接口,因此您可以将它们用作DataSource。其他类仅支持IEnumerable接口。这允许他们   用作数据源但不用作分页数据源。   SqlDataReader将是这样一个类的一个例子。 Reference

但我需要将转发器与linq的结果绑定到sql表。我该怎么办?

1 个答案:

答案 0 :(得分:1)

不要直接绑定到查询,请尝试:

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