在多视图中使用findcontrol进行下拉列表

时间:2011-04-27 22:11:03

标签: c# asp.net

我在aspx页面中设置了以下多视图:

<asp:MultiView id="MultiView1" runat="server" ActiveViewIndex="0">
    <asp:View id="View1" runat="server">
        <asp:Repeater id="view_program" runat="server"> 
        <ItemTemplate>
             blah blah blah
        </ItemTemplate>
        </asp:Repeater>
    </asp:View>
    <asp:View id="View2" runat="server">
        <asp:Repeater id="edit_program" runat="server"> 
        <ItemTemplate>
             <tr>
            <td class="add_border_bold" nowrap>Status</td>
            <td width="100%" class="add_border">
                <asp:DropDownList id="p_status" runat="server">
                </asp:DropDownList>
            </td>
            </tr>
        </ItemTemplate>
        </asp:Repeater>
    </asp:View>
</asp:MultiView> 

而我正在尝试做的是动态填充我的page_load函数的下拉列表,我根据我已经能够在findcontrol上解密多少来编写以下代码

DropDownList p_status = View2.FindControl("p_status") as DropDownList;
if (p_status != null)
{
    p_status.Items.Add(new ListItem("Green", "Green"));
}

但是,当我运行页面并单击按钮以在MultiView中加载View2时,下拉列表仍然完全为空。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

Dropdown位于转发器中,因此可以有多个下拉列表。

foreach (RepeaterItem item in edit_program.Items)
{
    var ddl = (DropDownList)item.FindControl("p_status");
    ddl.Items.Add(new ListItem("Green", "Green"));
}