Find control in asp: repeater on button click event

I have a dropdown list inside an asp: replater element template. how can I get its value on a button click event.

<asp:Repeater runat="server" ID="WorkflowListAfter" onitemcreated="WorkflowListAfterItemCreated"> <ItemTemplate> <asp:DropDownList ID="ddlWorkflowMembers" runat="server" DataTextField="MemberName" DataValueField="MemberID"> </ItemTemplate> </asp:Repeater> protected DropDownList ddlWorkflowMembers = new DropDownList(); protected void WorkflowListAfterItemCreated(object sender, RepeaterItemEventArgs e) { ddlWorkflowMembers = (DropDownList) e.Item.FindControl("ddlWorkflowMembers"); } protected void BtnSaveClick(object sender, EventArgs e) { if (ddlWorkflowMembers.SelectedItem == null) return; } 

the above code works for the first time, but after writing back ddlWorkflowMembers is always null.

+8
source share
1 answer

Assuming BtnSave also inside the repeater.

You will get RepeaterItem by clicking the NamingContainer button. Then you can use FindControl to get a link to your DropDownList :

 protected void BtnSaveClick(object sender, EventArgs e) { var btn = (Button)sender; var item = (RepeaterItem)btn.NamingContainer; var ddl = (DropDownList) item.FindControl("ddlWorkflowMembers"); // ... } 

If the button is outside the repeater, and you want to save all the elements, you need to do everything:

 protected void BtnSaveClick(object sender, EventArgs e) { foreach(RepeaterItem item in WorkflowListAfter.Items) { var ddl = (DropDownList) item.FindControl("ddlWorkflowMembers"); // ... } } 
+20
source share

All Articles