2010-04-23 4 views
3

Je FormView dans ma page Balisage:Impossible de trouver des contrôles dans FormView.InsertItemTemplate même événement DataBound

<asp:FormView ruanat="server" ID="FormView1" DataSourceID="SqlDataSource1" OnDataBinding="FormView1_DataBinding" OnDataBound="FormView1_DataBound"> 
    <InsertItemTemplate> 
     <uc:UserControl1 runat="server" ID="ucUserControl1" /> 
    </InsertItemTemplate> 
</asp:FormView> 
<asp:SqlDataSource runat="server" ID="SqlDataSource1" SelectCommand="EXEC someSP" /> 

Il est code-behind WAS:

protected void FormView1_DataBound(object sender, EventArgs e) 
{ 
    var c = FormView1.FindControl("ucUserControl1"); // returns null 
} 

DEVENU:

protected void FormView1_DataBinding(object sender, EventArgs e) 
{ 
    FormView1.ChangeMode(FormViewMode.Insert); 
} 

protected void FormView1_DataBound(object sender, EventArgs e) 
{ 
    if (FormView1.CurrentMode = FormViewMode.Insert) 
    { 
     var c = FormView1.FindControl("ucUserControl1"); // returns null no more! 
    } 
} 

En théorie, je suis en mesure de trouver le contrôle sur FormView après avoir été lié aux données. Mais je ne suis pas. Pourquoi?

Répondre

5
If (FormView1.CurrentMode == FormViewMode.Insert) 
     var c = FormView1.FindControl("ucUserControl1"); 
+0

J'ai effectué ma réponse à être plus clair – abatishchev

+0

try code mis à jour – Glennular

+0

mon code de mise à jour peut-il être une solution? Ou quel est le meilleur endroit pour changer de mode? 'DataBiding',' DataBound'? – abatishchev

Questions connexes