T
Tim Burda
OK - I am prepared for everyone who will tell me this is a hack and
bad idea; however, this is the only way I could find to solve this
problem, and it seems like other people are having similiar problems,
so I thought I would post my solution anyway.
I have a DataGrid with controls (TextBox, DropDownList, etc.) in the
Footer. I am using the Footer as entry area for new records. I need to
enable/disable controls in the Footer based on the state of a dropdown
list control (in the Footer). It appears that you can only access the
"Footer" item in the DataGrid in the DataGrid events "ItemCreated" &
"ItemDataBound".
The ItemDataBound event fires only when a DataGrid.DataBind() method
is invoked. This is not always possible as I want to re-bind the data
only when necessary, and not always when the value in the DropDownList
changes
The ItemCreated event fires each item the page is loaded and items are
created in the datagrid; however, the controls in the footer don't
seem to be created when this event is fired.
But, what you can you with the ItemCreated event is this:
delcare a variable (of page level scope):
private DataGridItem mitmFooter = null;
trap the ItemCreated event and then do the following:
if (e.Item.ItemType == ListItemType.Footer)
{
mitmFooter = e.Item;
}
With this reference, you can access the footer in other areas of the
code. In my case, I use the variable mitmFooter in the
"SelectedIndexChange" event for the dropdown list in the footer with
code similiar to this:
ddlSegmentType = (DropDownList)
mitmFooter.FindControl("ddlSegmentTypeFooter");
Word of caution: In order for this technique to be successful, you
need to verify that the order the events are firing in are correct
(i.e. the ItemCreated event fires before your event).
If you need more info or have questions, my email is posted.
Happy Coding -
Tim Burda
bad idea; however, this is the only way I could find to solve this
problem, and it seems like other people are having similiar problems,
so I thought I would post my solution anyway.
I have a DataGrid with controls (TextBox, DropDownList, etc.) in the
Footer. I am using the Footer as entry area for new records. I need to
enable/disable controls in the Footer based on the state of a dropdown
list control (in the Footer). It appears that you can only access the
"Footer" item in the DataGrid in the DataGrid events "ItemCreated" &
"ItemDataBound".
The ItemDataBound event fires only when a DataGrid.DataBind() method
is invoked. This is not always possible as I want to re-bind the data
only when necessary, and not always when the value in the DropDownList
changes
The ItemCreated event fires each item the page is loaded and items are
created in the datagrid; however, the controls in the footer don't
seem to be created when this event is fired.
But, what you can you with the ItemCreated event is this:
delcare a variable (of page level scope):
private DataGridItem mitmFooter = null;
trap the ItemCreated event and then do the following:
if (e.Item.ItemType == ListItemType.Footer)
{
mitmFooter = e.Item;
}
With this reference, you can access the footer in other areas of the
code. In my case, I use the variable mitmFooter in the
"SelectedIndexChange" event for the dropdown list in the footer with
code similiar to this:
ddlSegmentType = (DropDownList)
mitmFooter.FindControl("ddlSegmentTypeFooter");
Word of caution: In order for this technique to be successful, you
need to verify that the order the events are firing in are correct
(i.e. the ItemCreated event fires before your event).
If you need more info or have questions, my email is posted.
Happy Coding -
Tim Burda