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

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

内容摘要:既然2.0版本已经提供了数据源控件,你是否有想法,让你原有的控件也升级到同时支持通过设置DataSource属性和数据源控件来获取数据源,这样以后我们就可以省省工作了。这次我们就来讨论这个话题,让旧版本的数据绑定控件支持数据源控件。

// 从容器中获取DataControl
private Control FindControl(Control control, string controlID)
{
  Control namingContainer = control;
  Control dataControl = null;
  if (control != control.Page)
  {
    while ((dataControl == null) && (namingContainer != control.Page))
    {
      namingContainer = namingContainer.NamingContainer;
      if (namingContainer == null)
      {
        throw new HttpException("DataBoundControlHelper_NoNamingContainer");
      }
      dataControl = namingContainer.FindControl(controlID);
    }
    return dataControl;
  }
  return control.FindControl(controlID);
}
  
/// <summary>
/// 检索与数据绑定控件关联的 IDataSource 接口
/// </summary>
/// <returns></returns>
protected virtual IDataSource GetDataSource()
{
  if (this.currentDataSource != null)
  {
    return currentDataSource;
  }
  
  //获取数据源控件
  IDataSource source = null;
  string controlID = DataSourceID;
  if (controlID.Length != 0)
  {
    Control control = FindControl(this, controlID);
    source = control as IDataSource;
  }
  return source;
}

责编:豆豆技术应用

正在加载评论...