2009-06-24 15 views
4

Voici le code derrière ... Je suis en train de récupérer ce contrôle afin que je puisse ajouter des éléments à la liste déroulante (je récupérer les groupes de rôles pour ajouter la liste déroulante dans le code-behind)Problème pour trouver un contrôle dans un FormView de code-behind

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 

Voici le FormView: (j'ai pris la plupart des champs il est donc plus facile à lire)

<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> 

pourrait-il avoir à faire avec le fait qu'il est dans le sub Page_Load et le contrôle n'a pas été chargé acctually ye t?

Merci,
Matt

Répondre

1

FindControl sur un formview ne fonctionnera que pour le modèle que la propriété "CurrentMode" du FormView est réglé sur.

Dans votre cas, vous ne pouvez faire FindControl pour « DDRoleGroups » si votre FormView est réglé sur « Insérer », puisque c'est le modèle que votre contrôle existe dans.

espoir qui aide.

+0

DefaultMode = « Insérer » <- Est-ce n'est pas la même chose que CurrentMode = « Insérer »? – Matt

+0

Pas tout à fait. DefaultMode est ce à quoi renvoie le formview après toute opération d'insertion/mise à jour/suppression. CurrentMode représente le mode dans lequel le FV est actuellement. Je ne vous ai pas vu avoir déjà configuré votre DefaultMode. S'il est défini sur Insérer et que vous avez vérifié qu'il est bien sur Insérer pendant Page_Load, alors quelque chose d'autre se passe. – womp

+0

fait ce que vous avez dit, et même le FindControl dans les encapsulés Si ViewForm1.CurrentMode.Equals ("Insert) Puis. Il va certainement dans le cas, donc je ne sais pas pourquoi il ne fonctionne pas ... – Matt

3

Votre menu déroulant existe uniquement en mode Insertion. Essayez de mettre en œuvre l'événement ModeChanged de formview et récupérer le contrôle si CurrentMode == Insérer:

protected void FormView1_ModeChanged(object sender, EventArgs e) 
{ 
    if (FormView1.CurrentMode == FormViewMode.Insert) 
    { 
     DropDownList DDRoleGroups = FormView1.FindControl("DDRoleGroup"); 
     // fill dropdown 
    } 
} 

Vous ne pouvez pas gérer cela dans Page_Load, comme la forme n'a pas encore basculé en mode Insertion.