Link to home
Start Free TrialLog in
Avatar of eddiecon
eddiecon

asked on

ASP.NET - How do I reference a dynamic control from code behind

I have a button (1 of 2) inside a ListViewItem. The definition is:
<ItemTemplate>
<tr class="ItemStyle" style=" background-color: White ">
<td  ondatabinding="ManageButtonText" ID="UserCell" runat="server" align=center Width=180 style="border-bottom: solid 1px #BDF">
<%#Eval("username")%></td>
<td style="padding-left: 6px; padding-right: 3px; border-bottom: solid 1px #BDF">
<asp:Button ID="DetailButton"  OnClick="ButtonClick" CausesValidation=false
runat="server" Width=140 Height="22px" Font-Size=8  Text="View/Edit detailed ratings" />&nbsp;
<asp:Button ID="SummaryButton"  OnClick="ButtonClick" CausesValidation=false
runat="server" Width=140 Height="22px" Font-Size=8 Text="View/Edit summary ratings" />
</td>
</tr>
</ItemTemplate>

The extract in the attached code snippet, from my IE browser's "View Source", shows the ID of my button to be "EmpListView_ctrl0_DetailButton".
But when I try to access the button from code-behind using Page.FindControl("EmpListView_ctrl0_DetailButton"), it returns Nothing.
What am I doing wrong, please?

<table id="EmpListView_Table1" style="margin: 15px; ">
<tr>
<td>
<table id="EmpListView_itemPlaceholderContainer" border="1" cellpadding="4" class="MediumArial " style=" border-collapse: collapse;border-color: #555;
border-style:solid ; border-width:1px; ">
<tr id="EmpListView_Tr2" height="20px" style="font-weight:bold;  background-color: #ddd;">
<th id="EmpListView_Th1" style="border-bottom: solid 1px #333; padding: 5px">Employee Name</th>
<th id="EmpListView_Th2" colspan="2" style="border-bottom: solid 1px #333;">Action</th>
</tr>
<tr class="ItemStyle" style=" background-color: White ">
<td id="EmpListView_ctrl0_UserCell" align="center" width="180" style="border-bottom: solid 1px #BDF">Conradie Eddie</td>
<td style="padding-left: 6px; padding-right: 3px; border-bottom: solid 1px #BDF">
<input type="submit" name="EmpListView$ctrl0$DetailButton" value="View/Edit detailed ratings" id="EmpListView_ctrl0_DetailButton" style="font-size:8pt;height:22px;width:140px;" />&nbsp; 
<input type="submit" name="EmpListView$ctrl0$SummaryButton" value="View/Edit summary ratings" id="EmpListView_ctrl0_SummaryButton" style="font-size:8pt;height:22px;width:140px;" />
</td> 
</tr>
</table>

Open in new window

Avatar of naspinski
naspinski
Flag of United States of America image

instead of Page.FindControl("EmpListView_ctrl0_DetailButton") try:
EmpListView.FindControl("DetailButton");

Open in new window

more completely
Button DetailButton = (Button)EmpListView.FindControl("DetailButton");

Open in new window

Avatar of eddiecon
eddiecon

ASKER

Thanks for responding
The button(s) I want to access are inside each Listview item. So I have
EmpListView_ctrl0_Detail
EmpListView_ctrl1_Detail
etc
I have the "row" number 0/1/2 etc, now I just need the right syntax to refernce the button
Could you help, please?
ASKER CERTIFIED SOLUTION
Avatar of naspinski
naspinski
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial