public static IDynamicDataSource FindDataSourceControl (this Control current)
{
var control = current as BaseDataBoundControl;
if (control == null)
return null;
string dataSourceID = control.DataSourceID;
if (!String.IsNullOrEmpty (dataSourceID))
return control.DataSource as IDynamicDataSource;
Control namingContainer = control.NamingContainer;
IDynamicDataSource dds;
while (namingContainer != null) {
dds = namingContainer.FindControl (dataSourceID) as IDynamicDataSource;
if (dds != null)
return dds;
namingContainer = namingContainer.NamingContainer;
}
return null;
}