Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在asp:repeater on按钮单击事件中查找控件_C#_Asp.net - Fatal编程技术网

C# 在asp:repeater on按钮单击事件中查找控件

C# 在asp:repeater on按钮单击事件中查找控件,c#,asp.net,C#,Asp.net,我在asp:repeater项目模板中有一个下拉列表。 如何在按钮单击事件中获取其值 <asp:Repeater runat="server" ID="WorkflowListAfter" onitemcreated="WorkflowListAfterItemCreated"> <ItemTemplate> <asp:DropDownList ID="ddlWorkflowMembers" runat="server" DataTextF

我在asp:repeater项目模板中有一个下拉列表。 如何在按钮单击事件中获取其值

<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;
}

受保护的DropDownList ddlWorkflowMembers=新的DropDownList();
受保护的无效WorkflowListAfterItemCreated(对象发送方,RepeaterItemEventTarget)
{
ddlWorkflowMembers=(DropDownList)e.Item.FindControl(“ddlWorkflowMembers”);
}
受保护的无效BtnSaveClick(对象发送方,事件参数e){
if(ddlWorkflowMembers.SelectedItem==null)返回;
}

上面的代码在第一次工作时,但在回发ddlWorkflowMembers之后,总是为null expersion。

假设
BtnSave
也在中继器内

您可以通过按下按钮的按钮来获得
RepeaterItem
。然后,您可以使用
FindControl
获取对您的
DropDownList
的引用:

protected void BtnSaveClick(object sender, EventArgs e) {
    var btn =  (Button)sender;
    var item = (RepeaterItem)btn.NamingContainer;
    var ddl =  (DropDownList) item.FindControl("ddlWorkflowMembers");
    // ...
}
如果按钮位于中继器外部,并且您希望保存所有项目,则需要循环浏览所有:

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

回发后您是否正在执行
WorkflowListAfter.DataBind()
?否。仅在WorkflowListAfterItemCreated(){…}