我在InsertItemTemplate中有一个LinkButton,单击它时,应该在InsertItemTemplate中显示一个隐藏的DropDownList。但是,它似乎不起作用,但它会说,当单击LinkButton时,更改Formview外的标签文本。事件正在触发,但是在InsertItemTemplate中使DropDownList可见的部分没有做任何事情。代码如下:
的.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;
}
答案 0 :(得分:0)
您的下拉控件不是您的formview的直接子项。因此,由于FindControl调用不是递归的,因此您必须在窗体视图的子控件的正确位置搜索控件。 See this for the details但是从高层次来看,你需要的是:
DropDownList ctrl = (DropDownList)FormView1.Row.Cells[0].FindControl("ddlAddSelection2");
之后,您应该检查它是否为安全措施。