一件及其汗的事!

最近在做报表,为了进行一些自定义得属性和操作,我从Repeater类派生出一个自定义得控件SDRepeater,override它的一些重要属性和方法,其中包括我改写了Repeater的数据源类型,改成了一个我自定义得数据类型,但该类并没有实现IEnumerable借口,
Ok,一且好像都搞定了,在页面中声明,填充数据,绑定控件,运行,于是发现一个非常奇怪的现象,控件中的纪录条数,页数,当前页和上下页按钮都在,就是不见数据表格。狂郁闷,从公司郁闷到家,
怎么出现这种事情呢?百思不得其解!
回到家后又经过近两个小时的代码审查,终于让我发现问题!其实是个非常初级C#多态的问题,可是我们平时在继承控件的时候就有可能犯类似错误
看看出错的代码:
public class SDRepeater: Repeater
{
  private RepeaterSource _dataSource;
  override public object DataSource
  {
   set
   {
     RepeatorSource source = value as RepeatorSource;
     _dataSource = source;
     ItemCount = source.ItemCount;
     CurrentPageIndex = source.PageIndex;
    
   }
   get{ return _dataSource;  /*this code result in bugs!!*/} 
  }
}
 public class RepeaterSource
 {
//using public field ...just for simply 
   public IList Source;
   public int ItemCount;
   public int PageIndex;
 }
你看出为什么有问题了吗?

posted on 2004-05-18 00:35  coollzh  阅读(1053)  评论(5编辑  收藏  举报

导航