B
BluegrassNate
Hello all,
I've been working on a custom datagrid (custom web control inherited
from DataGrid). I am attempting to add a new collection property to
the control as described all over this group and the web... seems like
it should be easy but I've been at it for about a week :-(
Here's the problem: I am able to use my custom collection editor to add
collection items just fine, but the collection refuses to 'rebuild'
itself when I reopen the aspx file and gives the very helpful error
''NonDraggableColumns' could not be initialized". Obviously
NonDraggableColumns is my collection property.
Here are some relevant fragments:
ASPX code for datagrid looks like this:
<cc1:dhtmldatagrid id="dgResults" runat="server"
AutoGenerateColumns="False" AllowPaging="True" AllowSorting="True">
<Columns>
<asp:BoundColumn DataField="test" HeaderText="test"></asp:BoundColumn>
</Columns>
<NonDraggableColumns>
<cc1ataGridColumnIndex ParentPosition="0"></cc1ataGridColumnIndex>
</NonDraggableColumns>
</cc1:dhtmldatagrid>
So the editor did its job and correctly added an item to my custom
collection, which is simply a collection of DataGridColumnIndex objects
inherited from CollectionBase. I've provided the proper indexers and
Add methods, etc.
The DataGridColumnIndex class is very very simple (because I just need
to get a collection like this working first!) and only has one public
property - ParentPosition (Int32).
My collection property is defined in my control as follows:
[Editor(typeof(ACS.Bluegrass.Web.Controls.ColumnCollectionSubsetEditor),
typeof(System.Drawing.Design.UITypeEditor)),
DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
PersistenceMode(PersistenceMode.InnerProperty)]
public DataGridColumnCollectionSubset NonDraggableColumns
{
get
{
if (nonDraggableColumns == null)
{
nonDraggableColumns = new DataGridColumnCollectionSubset();
}
return nonDraggableColumns;
}
}
Of course, the control class is marked as ParseChildren(true),
PersistChildren(false).
Everything has the same namespace. The strangest thing is, if I simply
use and ArrayList instead of my CollectionBase -based collection class,
the parsing will suceed, BUT only if I manually remove the namespace
prefix (cc1 from the inner <cc1ataGridColumnIndex
ParentPosition="0"></cc1ataGridColumnIndex> tags.
Someone please help... I've been pulling my hair out and losing sleep
over this problem and I've poured over every post and web page I can
find about this subject, to no avail.
Let me know if any more information is needed.
P.S. This is ASP.NET 1.1, VS.NET 2003
Thank you!
I've been working on a custom datagrid (custom web control inherited
from DataGrid). I am attempting to add a new collection property to
the control as described all over this group and the web... seems like
it should be easy but I've been at it for about a week :-(
Here's the problem: I am able to use my custom collection editor to add
collection items just fine, but the collection refuses to 'rebuild'
itself when I reopen the aspx file and gives the very helpful error
''NonDraggableColumns' could not be initialized". Obviously
NonDraggableColumns is my collection property.
Here are some relevant fragments:
ASPX code for datagrid looks like this:
<cc1:dhtmldatagrid id="dgResults" runat="server"
AutoGenerateColumns="False" AllowPaging="True" AllowSorting="True">
<Columns>
<asp:BoundColumn DataField="test" HeaderText="test"></asp:BoundColumn>
</Columns>
<NonDraggableColumns>
<cc1ataGridColumnIndex ParentPosition="0"></cc1ataGridColumnIndex>
</NonDraggableColumns>
</cc1:dhtmldatagrid>
So the editor did its job and correctly added an item to my custom
collection, which is simply a collection of DataGridColumnIndex objects
inherited from CollectionBase. I've provided the proper indexers and
Add methods, etc.
The DataGridColumnIndex class is very very simple (because I just need
to get a collection like this working first!) and only has one public
property - ParentPosition (Int32).
My collection property is defined in my control as follows:
[Editor(typeof(ACS.Bluegrass.Web.Controls.ColumnCollectionSubsetEditor),
typeof(System.Drawing.Design.UITypeEditor)),
DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
PersistenceMode(PersistenceMode.InnerProperty)]
public DataGridColumnCollectionSubset NonDraggableColumns
{
get
{
if (nonDraggableColumns == null)
{
nonDraggableColumns = new DataGridColumnCollectionSubset();
}
return nonDraggableColumns;
}
}
Of course, the control class is marked as ParseChildren(true),
PersistChildren(false).
Everything has the same namespace. The strangest thing is, if I simply
use and ArrayList instead of my CollectionBase -based collection class,
the parsing will suceed, BUT only if I manually remove the namespace
prefix (cc1 from the inner <cc1ataGridColumnIndex
ParentPosition="0"></cc1ataGridColumnIndex> tags.
Someone please help... I've been pulling my hair out and losing sleep
over this problem and I've poured over every post and web page I can
find about this subject, to no avail.
Let me know if any more information is needed.
P.S. This is ASP.NET 1.1, VS.NET 2003
Thank you!