4

这里是后面的代码...我正在尝试检索此控件,以便可以将项目添加到下拉列表中(我正在检索角色组以添加到代码隐藏中的下拉列表中)

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 子中并且控件尚未实际加载的事实有关吗?

谢谢,
马特

4

2 回答 2

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 中处理此问题,因为表单尚未切换到插入模式。

于 2009-07-18T09:07:47.557 回答
1

Formview 上的 FindControl 仅适用于 FormView 的“CurrentMode”属性设置为的模板。

在您的情况下,如果您的 FormView 设置为“Insert”,您只能为“DDRoleGroups”执行 FindControl,因为这是您的控件所在的模板。

希望有帮助。

于 2009-06-24T15:47:47.017 回答