ASP.NET控件开发基础(17)

http://tech.ddvip.com   2007年09月02日    社区交流

内容摘要:ASP.NET控件开发基础

  CreateItem方法辅助用于创建项模板,此处注意事件触发顺序,上面已经提到过

  此方法根据项索引创建控件中不同的Item项 ,ViewState["ItemCount"]表示项的数量,第一次触发时或者重新执行DataBind方法时方法参数为true,并在初始化以后(回发期间)CreateChildControls方法会调用此方法,其参数为false

  数据源不再是实际的数据源,而是新定义的DummyDataSource,其主要实现了一个迭代

internal sealed class DummyDataSource : ICollection
  {
  
    private int dataItemCount;
  
    public DummyDataSource(int dataItemCount)
    {
      this.dataItemCount = dataItemCount;
    }
  
    public int Count
    {
      get
      {
        return dataItemCount;
      }
    }
  
    public bool IsReadOnly
    {
      get
      {
        return false;
      }
    }
  
    public bool IsSynchronized
    {
      get
      {
        return false;
      }
    }
  
    public object SyncRoot
    {
      get
      {
        return this;
      }
    }
  
    public void CopyTo(Array array, int index)
    {
      for (IEnumerator e = this.GetEnumerator(); e.MoveNext(); )
        array.SetValue(e.Current, index++);
    }
  
    public IEnumerator GetEnumerator()
    {
      return new DummyDataSourceEnumerator(dataItemCount);
    }
  
    private class DummyDataSourceEnumerator : IEnumerator
    {
  
      private int count;
      private int index;
  
      public DummyDataSourceEnumerator(int count)
      {
        this.count = count;
        this.index = -1;
      }
  
      public object Current
      {
        get
        {
          return null;
        }
      }
  
      public bool MoveNext()
      {
        index++;
        return index < count;
      }
  
      public void Reset()
      {
        this.index = -1;
      }
    }
  }

责编:豆豆技术应用

正在加载评论...