我想用Repeater绑定输出数据:按照三层架构的做法,先弄了一个类:
public class ProductList:List<Product>
{
   public ProductList() { }
}
然后在ProductManager中写了一个方法:ProductManager.GetList()返回 ProductList类型的数据。代码略。最后在页面程序中输出:    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            ShowProdLists2();
        }
    }    private void ShowProdLists2()
    {
        //bn mn,sn技术文献
        ProductList myProdList = ProductManager.GetList("技术文献", "", "", 100);        //myProdList 转换成 DataSet! 
        //晕死了,为什么要转换呢? 
        //直接将泛型索引器数据绑定到 DataSource中就可以了。
        //DataSet DS = this.ConvertTODataSet(myProdList);
        //repeaterProdList.DataSource = DS;

        repeaterProdList.DataSource = myProdList ;// DS;
        repeaterProdList.DataBind();
            }
搞笑部分见加红注释。*囧问题出在:我不太清楚:Repeater.DataSource属性可以是哪些数据? IList DataTable ,DataSet,还有???

解决方案 »

  1.   

    DataReader呀,或是arraylist等都可以
      

  2.   

    实现了 IEnumerable 接口的
      

  3.   

    任何实现 IListSource 接口的组件 
    任何实现 IList 接口的组件
      

  4.   

    谢谢1楼:
    可以作为DataSource的有:DataReader
    arraylist
    DataSet
    DataTable
    2 , 3楼说的不一样,到底哪个对??
      

  5.   

    刚才查了MS 资料:IEnumerable 接口:公开枚举数,该枚举数支持在非泛型集合上进行简单迭代。示例演示如何实现自定义集合的 IEnumerable 和 IEnumerator 接口http://msdn.microsoft.com/zh-cn/library/system.collections.ienumerable.aspx我看着有点晕
      

  6.   

    任何集合都可以的Arraylist也可以
      

  7.   

    是的,很多ORM框架返回的就是list类型的实体对象
      

  8.   

    List<T>是可以转换为DataTable的。反射得到T的所有属性,DT随之添加这些列。然后便利list中所有对象,反射得到相应属性的值添加到DT中
      

  9.   


    我的注释中: DataSet DS = this.ConvertTODataSet(myProdList);就是做这样的转换。 
    不过不是你说的反射等技术实现。就是一个foreach。可笑之处就在这,绑定数据源根本不需要转换啊
      

  10.   

    从MS找到了结果:资源在:http://support.microsoft.com/kb/307860#2
      

  11.   

    估计用datatable,.net内部也是先转成list再绑定