Question: When I open Form from Properties window of Composite control, I can add, delete fields but when I add field DataField property have empty DropDown.
How Can I get List of Fields that is defined inmy CompositeControl with DataSourceID?
How Can I get List of Fields that is defined inmy CompositeControl with DataSourceID?
C#:
namespace uOfficeServerControls
{
public class uOfficeDataControlFieldCollectionEditorForm : CollectionEditor
{
private DataControlFieldCollection collection;
public uOfficeDataControlFieldCollectionEditorForm(Type type) : base(type)
{
}
protected override CollectionForm CreateCollectionForm()
{
CollectionForm collectionForm = base.CreateCollectionForm();
collectionForm.BackColor = System.Drawing.Color.Gray;
return collectionForm;
}
protected override object CreateInstance(Type itemType)
{
if (itemType == typeof(BoundField)) { return new BoundField(); }
else if (itemType == typeof(ImageField)) { return new ImageField(); }
else if (itemType == typeof(ButtonField)) { return new ButtonField(); }
else if (itemType == typeof(CommandField)) { return new CommandField(); }
else if (itemType == typeof(TemplateField)) { return new TemplateField(); }
else if (itemType == typeof(CheckBoxField)) { return new CheckBoxField(); }
else if (itemType == typeof(HyperLinkField)) { return new HyperLinkField(); }
else if (itemType == typeof(ImageField)) { return new ImageField(); }
else if (itemType == typeof(uGridViewField)) { return new uGridViewField("1", "2"); }
else if (itemType == typeof(uGridViewRadioButtonField)) { return new uGridViewRadioButtonField(); }
else
{
var constructor = itemType.GetConstructors().FirstOrDefault();
if (constructor != null)
{
var parameters = constructor.GetParameters();
var args = parameters.Select(p => Type.Missing).ToArray();
return Activator.CreateInstance(itemType, args);
}
}
return null;
}
protected override Type[] CreateNewItemTypes()
{
return new Type[] { typeof(BoundField), typeof(ImageField), typeof(ButtonField), typeof(CommandField), typeof(TemplateField), typeof(CheckBoxField),
typeof(HyperLinkField), typeof(uGridViewField), typeof(uGridViewRadioButtonField) };
}
public DataControlFieldCollection Collection
{
get { return collection; }
set { collection = value; }
}
#region CustomFields
public sealed class uGridViewField
{
....
}
public sealed class uGridViewRadioButtonField : CheckBoxField
{
......
cell.Controls.Add(radio);
}
}
#endregion
}
}
Last edited by a moderator: