Hi Folks,

I wonder if anyone knows what is happening here because I'm very confused...

I have some nested repeater that I'm using to display a list of Categories, projects and tasks on my ASP.net site written in VB.net

i.e.
Repeater 1 Category
Repeater 2 Project
Repeater 3 Task

In the task items, I have an edit feature where one placeholder is made visible and the other is closed.

The issue happens after my users have edited the values and hit my save button I can no longer access the values they have inputted in the edit fields even though if I do a view source on the page I can see the values and the Client Id's match up in the code step through.

<asp:Repeater Id=Category runat ="server">
<ItemTemplate>
<table border=0 cellpadding =0 cellspacing=0>
  <tr>
      <td><%# Eval("CategoryName")%></td>
  </tr>
  <asp:Repeater id="Project" runat="server">
  <ItemTemplate>
   <tr>
     <td>
        <table border=0 cellpadding =0 cellspacing=0>
        <tr>
           <td></td>
           <td><asp:HiddenField id="ProjectID" value='<%#Eval("ProjectID")%>' /><%# Eval("ProjectName")%></td>
           </td>
         </tr> 
         <tr>
            <td></td>
            <td>
               <table border="0" Cellpadding="0" CellSpacing="0>
                <THead>
                    <th>Task</th>
                    <th>Status</th>
                    <th>Due</th>
                </THead>
                <TBody>
                 <asp:Repeater id="Tasks">
                 <ItemTemplate>
                 <asp:HiddenField id="TaskID" Value='<%# Eval("TaskID")%>' />
                 <asp:HiddenField id="StatusCode" Value='<%# Eval("StatusCode")%>' />
                 <asp:PlaceHolder id="Task">
                 <tr>
                     <td><asp:LinkButton id="TaskLnk" OnClick="EditMe" Text='<#% Eval("TaskName")%>' /></td>
		     <td><asp:LinkButton id="StatusLnk" OnClick="EditMe" Text='<#% Eval("Status")%>' /></td>
		     <td><asp:LinkButton id="DateLnk" OnClick="EditMe" Text='<#% Eval("DueDate")%>' /></td>
		     <td>&nbsp;</td>
                 </tr> 
                 </asp:Placeholder >
		<asp:PlaceHolder id="EditTask" Visible="False>
                 <tr>
                     <td><asp:Textbox id="txtTaskEdit" /></td>
		     <td><asp:DropDownList id="dlStatus" /></td>
		     <td><asp:LinkButton id="EditDateLnk" OnClick="EditDate" Text='<#% Eval("DueDate")%>' /></td>
		     <td>
                         <table border="0">
                         <tr>
                           <td><asp:LinkButton id="SaveLnk" OnClick="saveMe" Text="Save" /></td>
			   <td>&nbsp;</td>
                           <td><asp:LinkButton id="CancelLnk" onclick="CancelEdit" Text="Cancel" /></td>	
                         </tr>
                         </table>
                     </td>  
                 </tr> 
                 </asp:Placeholder >
                 </ItemTemplate> 
                 </asp:Repeater> 
                </TBody> 
               </table>
            </td>
         </tr>
        </table> 
     </td>
  </tr>
  </ItemTemplate>
  </asp:Repeater>
</table>
</ItemTemplate>
<SeparatorTemplate><br /><br />
</asp:Repeater>

In the server side debugg I get the TaskID and other all values except for those inside the edit placeholder although the are all rendered on the screen and HTMl source correctly when the user hits the one of the edit links

Sub saveME(ByVal sender As Object, ByVal e As EventArgs)
Dim Source as linkbutton = ctype(sender, Linkbutton)
Dim MyParent As PlaceHolder = CType(Source.parent, PlaceHolder)
Dim MyGrandParent As RepeaterItem
Dim TaskSrc As HiddenField
dim iTaskID as Integer
dim nonEdit as PlaceHolder
dim TaskName as Textbox
dim TaskStatus as DropDownList
dim DateDue as LinkButton
dim StatusCode as Integer
dim TaskDesc as String
dim Due as Date

MyGrandParent = CType(MyParent.Parent, RepeaterItem)
TaskSrc = CType(MyGrandParent.FindControl("TaskID"), HiddenField)
iTaskID = TaskSrc.value 'works
nonEdit = CType(MyGrandParent.FindControl("Task"), PlaceHolder)
TaskName = CType(MyParent.FindControl("txtTaskEdit"), TextBox)
if TaskName isnot nothing then
	TaskDesc = TaskName.Text 'returns blank....even though clientId matches that in HTML Source...
else 
	TaskDesc=""
end if
TaskStatus = CType(MyParent.FindControl("dlStatus"), DropDownList)
if TaskStatus isnot nothing then
	StatusCode = TaskStatus.SelectedValue 'returns blank....even though clientId matches that in HTML Source...
else
	StatusCode =1000
end if
DateDue = CType(MyParent.FindControl("EditDateLnk"), LinkButton)
If DateDue isnot nothing then
   Due = DateDue.text	'returns blank....even though clientId matches that in HTML Source...
else
   Due = DateAdd(DateInterval.Month, 1, Now)
end if

'update values to Database then hide edit panel refresh repeater data and show normal panel

Any Ideas???? I though maybe that the inputs were not considered children of the placeholder so I tried querying thenm as part of the Repeateritem but still had no luck.

I should have checked my page load event.....

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.