Insede of ItemDataBound

Posted on 2006-03-29
Medium Priority
Last Modified: 2008-01-09
Hello I have a datagrid with template items - it's fairely simple, one column of checkboxes, and three columns of the labels (one label in one column). It's implemented like that (that's for one column):

<asp:TemplateColumn HeaderText="Item Description">
            <asp:Label Runat="server" ID="Label16">Item Description</asp:Label>
            <asp:Label ID="lblDescription" Runat="server" Width="250">
                  <%# DataBinder.Eval( Container.DataItem, "description" ) %>

and everything works fine.

I need to do some changes depending on to what my labels are bound - enabling or disable checkboxes in the first column - and I'm trying to check it like that:

if( (( Label )e.Item.Cells[ 3 ].Controls[ 1 ]).Text != someTextContro.Text ) { ... }

inside ItemDataBound and it is always empty... I checked MSDN and it's said this event is called AFTER the item is bound, so presumable if the item IS bound, controls inside this item should be bound as well and should contain some data... Yet it's not working this way.

I can suggest that controls inside the item are bound later, but what do I do in this case?? What is the event I can use to enable/disable my controls depending on what my controls inside items were bound to.


Question by:Yurich
  • 2
  • 2
LVL 10

Accepted Solution

orbulat earned 2000 total points
ID: 16329249
u can simply do so

1. go to design view of your datagrid, in "Properties" ,click "Events" tab, double click "ItemDataBound"
2. this will bring you to code behind
3. then u do sth. like this-->

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    DataRowView dv = (DataRowView)e.Item.DataItem;
    Label lblDescription= (Label)e.Item.FindControl("lblDescription");
    lblDescription.Text = dv["description"];
    //then do your modification
    if (lblDescription.Text == "")
LVL 21

Author Comment

ID: 16329314

I have exception "specified cast is not valid" on this line:

DataRowView dv = ( DataRowView )e.Item.DataItem;

any ideas?

LVL 21

Author Comment

ID: 16329372
found how to do it:

System.Data.Common.DbDataRecord ddr = ( System.Data.Common.DbDataRecord )e.Item.DataItem;
string ecert = ddr[ "description" ].ToString();

All credit goes to you as you pointed to the right direction and I was completely stuck :)

Thank you
LVL 10

Expert Comment

ID: 16329500
great that u've solved this!
thanks a lot :-)

Featured Post

Prep for the ITIL® Foundation Certification Exam

December’s Course of the Month is now available! Enroll to learn ITIL® Foundation best practices for delivering IT services effectively and efficiently.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Lots of people ask this question on how to extend the “MembershipProvider” to make use of custom authentication like using existing database or make use of some other way of authentication. Many blogs show you how to extend the membership provider c…
Sometimes in DotNetNuke module development you want to swap controls within the same module definition.  In doing this DNN (somewhat annoyingly) swaps the Skin and Container definitions to the default admin selections.  To get around this you need t…
This lesson discusses how to use a Mainform + Subforms in Microsoft Access to find and enter data for payments on orders. The sample data comes from a custom shop that builds and sells movable storage structures that are delivered to your property. …
Screencast - Getting to Know the Pipeline
Suggested Courses
Course of the Month15 days, 6 hours left to enroll

840 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question