0

我在 InsertItemTemplate 中有一个 LinkBut​​ton,单击它时应在 InsertItemTemplate 中显示一个隐藏的 DropDownList。但是,它似乎不起作用,但它会说,在单击 LinkBut​​ton 时更改 Formview 之外的标签文本。该事件正在触发,但使 DropDownList 在 InsertItemTemplate 中可见的部分没有做任何事情。代码如下:

.aspx:

<asp:FormView ID="formViewNewRecord" runat="server">
        <InsertItemTemplate>
            <asp:DropDownList ID="ddlAddSelection2" runat="server" DataSourceID="dSource1" DataTextField="Users"  DataValueField="Users" AppendDataBoundItems="true" Visible="false">
                <asp:ListItem></asp:ListItem>
            </asp:DropDownList>
            <asp:LinkButton runat="server" ID="lbAddAnother" OnClick="lbAddAnother_Click">+Add Another</asp:LinkButton>
        </InsertItemTemplate>
        </asp:FormView>

    <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>

C#:

protected void lbAddAnother_Click(object sender, EventArgs e)
{
    DropDownList addSelection2 = (DropDownList)formViewNewItem.Row.Cells[0].FindControl("ddlAddSelection2");
    addSelection2.Visible = true;
    Label2.Text = addSelection2.ID;
}
4

1 回答 1

0

您的下拉控件不是您的表单视图的直接子项。因此,由于 FindControl 调用不是递归的,因此您必须在表单视图的子控件的正确位置搜索控件。有关详细信息,请参阅此内容,但在高层次上,您需要以下内容:

DropDownList ctrl = (DropDownList)FormView1.Row.Cells[0].FindControl("ddlAddSelection2");

之后,您应该检查它是否为 null 以确保安全。

于 2013-06-27T16:52:46.660 回答