这里的代码背后......我正在尝试检索此控件,以便我可以将项添加到下拉列表中(我正在检索角色组以添加到代码隐藏中的下拉列表中)< / p>
Protected Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim DDRoleGroups As DropDownList
DDRoleGroups = FormView1.FindControl("DDRoleGroup")
End Sub
这是FormView:(我取出了大部分字段,因此更容易阅读)
<asp:FormView ID="FormView1" runat="server" DataKeyNames="ID"
DataSourceID="ObjectDataSource_Vendors"
DefaultMode="Insert" BorderColor="DarkGray"
BorderStyle="Solid" BorderWidth="1px" CellPadding="4" Visible="False">
<EditItemTemplate>
</EditItemTemplate>
<InsertItemTemplate>
<label class="form_label">Role Group:</label><br /><asp:DropDownList ID="DDRoleGroup"
runat="server" Width="175px"
EnableViewState="False">
</asp:DropDownList>
</InsertItemTemplate>
</asp:FormView>
它是否可能与它在Page_Load子中并且控件尚未实际加载的事实有关?
谢谢,
马特
答案 0 :(得分:3)
您的下拉列表仅存在于插入模式中。尝试实现formview的ModeChanged事件并检索控件,如果CurrentMode == Insert:
protected void FormView1_ModeChanged(object sender, EventArgs e)
{
if (FormView1.CurrentMode == FormViewMode.Insert)
{
DropDownList DDRoleGroups = FormView1.FindControl("DDRoleGroup");
// fill dropdown
}
}
您无法在Page_Load中处理此问题,因为表单尚未切换到插入模式。
答案 1 :(得分:1)
窗体视图上的FindControl仅适用于FormView的“CurrentMode”属性设置为的模板。
在您的情况下,如果您的FormView设置为“Insert”,则只能为“DDRoleGroups”执行FindControl,因为这是您的控件所在的模板。
希望有所帮助。