简体   繁体   English

在按钮点击事件中查找asp:repeater中的Control

[英]Find Control in asp:repeater on button click event

I have a dropdown list inside a asp:repeater item template. 我在asp:repeater项目模板中有一个下拉列表。 how can I get its value on 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 code above is working at first time but after postback ddlWorkflowMembers is always null expersion. 上面的代码是第一次工作,但在回发后ddlWorkflowMembers总是为null expersion。

Assuming that BtnSave is also inside the repeater. 假设BtnSave也在转发器内部。

You get the RepeaterItem by casting the button's NamingContainer . 通过强制转换按钮的NamingContainer获得RepeaterItem Then you can use FindControl to get the reference to your DropDownList : 然后,您可以使用FindControl获取对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 of the repeater and you want to save all items, you need to loop through all: 如果按钮位于转发器之外,并且您想要保存所有项目,则需要遍历所有项目:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在按钮单击事件中的中继器中找到控件,并将中继器放置在ASP.NET C#的gridview中 - How to find control with in repeater on button click event and repeater is placed with in gridview in asp.net C# 如何查找放置在转发器控件中的按钮的单击事件 - How to find click event of button placed inside a repeater control 按钮单击事件在转发器控件中不起作用 - Button click event not working inside repeater control 如何在中继器控件中设置按钮的单击事件 - How to set a click event for button in repeater control Asp.Net按钮单击UpdatePanel内的Repeater内的Event - Asp.Net Button click Event inside Repeater inside UpdatePanel 在另一个按钮单击事件中的转发器中查找CheckBox - Find CheckBox Inside a repeater in another button click event 如何在Repeater控件中更改Button控件的文本并捕获其click事件 - How to change Button control's text inside Repeater control and catch its click event 在ASP.Net C#中,在按钮单击事件上,我在DataList中找到FileUpload控件,并且显示错误? - In ASP.Net C#, on button click event I find the FileUpload Control within DataList and It gives error? 无法从ASP Timer滴答事件中找到ASP Repeater子控件 - Unable to find ASP Repeater child control from ASP Timer tick event 从另一个转发器中的用户控件单击按钮即可将数据绑定到转发器 - Bind data to repeater on button click from user control in another repeater
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM