2012-05-10 7 views
0

Est-ce juste moi ou est il y a une grave pénurie de matériel sur databinding 2 voies?Création d'un DataBound UserControl avec un champ ITemplate qui prend en charge à savoir la liaison 2 voies <%# Bind() %>

de toute façon, mon problème est, je l'ai créé un UserControl être placé à l'intérieur d'un FormView.InsertItemTemplate.

Mon UserControl lui-même a un champ ITemplate. Fondamentalement, l'idée est, sous ma forme que j'ai 5 contrôles qui sont communs à toutes les formes, et une autre section qui peut être personnalisable en fonction de la forme.

Mon Markup ressemble à ceci:

<irt:FormView ID="FormViewInsertEvent" DefaultMode="Insert" runat="server" 
    DataKeyNames="EVENT_ID" DataSourceID="DataSourceEvents"> 
    <InsertItemTemplate> 
     <irt:EventControl ID="EventControlInsertEvent" runat="server" DataSourceID="DataSourceDataModemEvents"     
      EventDate='<%# Bind("EVENT_DATE") %>' 
      EventTypes='<%# Bind("EVENT_TYPE") %>'> 
      <CustomContent> 
       Additional Property: 
       <asp:TextBox ID="AdditionalTextBox" runat="server" Text='<%# Bind("ADDITIONAL_PROPERTY") %>' />        
      </CustomContent> 
     </irt:EventControl> 
    </InsertItemTemplate> 
</irt:FormView> 

je me sens comme théoriquement tout est correct. Mais je reçois une erreur de compilation runtime ASP.NET @line 4637:

Compiler Error Message: CS0128: A local variable named 'AdditionalTextBox' is already defined in this scope 

Source Error: 

Line 4635:   #line default 
Line 4636:   #line hidden 
Line 4637:   System.Web.UI.WebControls.TextBox AdditionalTextBox; 
Line 4638:    
Line 4639:   #line 378 "C:\MyProj\trunk\Releases\Source\FilePathSensored.aspx" 

Le code à cette ligne est la suivante:

Line 4620:   [System.Diagnostics.DebuggerNonUserCodeAttribute()] 
Line 4621:   public System.Collections.Specialized.IOrderedDictionary @__ExtractValues__control84(System.Web.UI.Control @__container) { 

... 
Line 4628:    #line default 
Line 4629:    #line hidden 
Line 4630:    System.Web.UI.WebControls.TextBox AdditionalTextBox; 
Line 4631:    
Line 4632:    #line 378 "C:\MyProj\trunk\Releases\Source\FilePathSensored.aspx" 
Line 4633:    AdditionalTextBox = ((System.Web.UI.WebControls.TextBox)(@__container.FindControl("AdditionalTextBox"))); 
Line 4634:    
Line 4635:    #line default 
Line 4636:    #line hidden 
Line 4637:    System.Web.UI.WebControls.TextBox AdditionalTextBox; 
Line 4638:    
Line 4639:    #line 378 "C:\MyProj\trunk\Releases\Source\FilePathSensored.aspx" 
Line 4640:    AdditionalTextBox = ((System.Web.UI.WebControls.TextBox)(@__container.FindControl("AdditionalTextBox"))); 
Line 4641:    

Comme vous pouvez le voir, le code généré pour mon ASPX a déclaré AdditionalTextBox deux fois

est-ce que quelqu'un sait pourquoi est-ce? plus important encore, comment puis-je résoudre ce problème ou contourner cela?

Merci à l'avance Nandun

Répondre

0

Si l'ID de la zone de texte n'est pas obligatoire pour vous et que vous ne l'utilisez pas dans le code-behind vous pouvez l'enlever et la sécurité asp.net va générer automatiquement ce .

+0

est vrai, mais le problème est que je dois utiliser <%# Bind() %>. Lorsque vous utilisez une liaison bidirectionnelle, l'ID est requis. sinon cela conduit à une erreur. – Nandun

Questions connexes