Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

How Access Controls In A DataGrid Footer

18 views
Skip to first unread message

Tim Burda

unread,
Jul 8, 2003, 3:44:05 PM7/8/03
to
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

Alvin Bruney

unread,
Jul 9, 2003, 1:08:51 AM7/9/03
to
sweet,
possible problem though, when your data grid goes away, you still maintain a
reference to its' footer obstructing garbage collection because items are
still reachable. you should make certain to dispose of this bad guy when
your grid goes away.

"Tim Burda" <timoth...@intelsat.com> wrote in message
news:7e107407.03070...@posting.google.com...

Craig Grell

unread,
Jul 9, 2003, 7:15:31 AM7/9/03
to
Thank you

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:

TiSch

unread,
Dec 17, 2004, 10:28:42 AM12/17/04
to

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

0 new messages