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
"Tim Burda" <timoth...@intelsat.com> wrote in message
news:7e107407.03070...@posting.google.com...
This is just what I was looking for and so far no problems.
timoth...@intelsat.com (Tim Burda) wrote in
news:7e107407.03070...@posting.google.com:
Hello,
there is another way to access the footer:
Public Shared Function getFooter(ByVal grid As DataGrid) As
DataGridItem
Dim footer As Control
For Each ctrl As WebControl In grid.Controls(0).Controls
'loop DataGridTable
If TypeOf ctrl Is System.Web.UI.WebControls.DataGridItem
Then
Dim item As DataGridItem = DirectCast(ctrl,
DataGridItem)
Select Case item.ItemType
Case ListItemType.Footer
Return item
End Select
End If
Next
End Function
Regards,
Tim