随便写个TypeConverter,例如:
public class DataGridTypeConverter:StringConverter
{
public override System.ComponentModel.TypeConverter.StandardValuesCollection GetStandardValues(System.ComponentModel.ITypeDescriptorContext context)
{
if(context==null)
return null;
ArrayList al=new ArrayList();
foreach(IComponent ic in context.Container.Components)
{
if(ic is DataGrid)
{
al.Add( ((DataGrid)ic).ID );
}
}
return new TypeConverter.StandardValuesCollection(al);
}
public override bool GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext context)
{
return false;
}
public override bool GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext context)
{
return true;
}
}用法:public MyCtrl:Control
{
[TypeConverter(typeof(DataGridTypeConverter))]
public string Target
{
get
{
object o=ViewState["tdg"];
return o==null?"":o.ToString();
}
set
{
ViewState["tdg"]=value;
}
} pulbic DataGrid TargetDataGrid
{
get
{
if(Target.Length==0)return null;
if(Parent==null)return null;
return Parent.FindControl(Target) as DataGrid;
}
}
}