Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > ASP .Net Datagrid Control > How Access Controls In A DataGrid Footer

Reply
Thread Tools

How Access Controls In A DataGrid Footer

 
 
Tim Burda
Guest
Posts: n/a
 
      07-08-2003
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
 
Reply With Quote
 
 
 
 
Craig Grell
Guest
Posts: n/a
 
      07-09-2003
Thank you

This is just what I was looking for and so far no problems.



http://www.velocityreviews.com/forums/(E-Mail Removed) (Tim Burda) wrote in
news:(E-Mail Removed) om:

> 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


 
Reply With Quote
 
 
 
 
TiSch
Guest
Posts: n/a
 
      12-17-2004
Tim Burda wrote:
> 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




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

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: How include a large array? Edward A. Falk C Programming 1 04-04-2013 08:07 PM
Any way to reorder how a datagrid is drawn (header/footer/items vs.header/items/footer)? Henrik ASP .Net Datagrid Control 1 07-06-2006 12:23 AM
findcontrol not getting reference to controls in datagrid footer james_crane@btinternet.com ASP .Net Web Controls 0 01-17-2005 02:26 PM
Method to Access Controls In A DataGrid Footer SteveFoo ASP .Net Datagrid Control 0 03-06-2004 11:10 AM
A solution to finding controls in datagrid footer... Nofear ASP .Net Datagrid Control 1 12-17-2003 07:23 PM



Advertisments