2017-08-30 7 views
0

Ich habe eine Seite ohne Inhalt (kein Master) mit einem Repeater, der so funktioniert, wie ich es möchte, aber wenn ich denselben Code auf eine Inhaltsseite (mit Master) verschiebe, findControl in einer Schleife von RepeaterItems funktioniert nicht mehr.repeater.findcontrol funktioniert nicht auf der Seite Inhalt

aspx:

<ItemTemplate> 
      <div class="row" id="qrow" runat="server" data-id='<%#Eval("callQuestionID") %>' data-type='<%#Eval("callQuestionResponseType") %>' data-parent='<%#Eval("callQuestionParent") %>'> 
       <div class="col-md-4"> 
        <asp:Label ID="questonTextLabel" runat="server" Text='<%# Eval("callQuestionText") %>'></asp:Label> 
       </div> 
       <div class="col-md-4"> 
        <asp:Panel ID="Panel1" runat="server"></asp:Panel> 
       </div> 
      </div> 
     </ItemTemplate> 

ItemDataBound exerp

Dim newRBY As New RadioButton 
       newRBY.InputAttributes.Add("data-id", CType(e.Item.DataItem, DataRowView)("callQuestionID")) 
       newRBY.InputAttributes.Add("data-idy", CType(e.Item.DataItem, DataRowView)("callQuestionID")) 
       newRBY.ID = "rby" 
       newRBY.Text = "Yes" 
       newRBY.GroupName = "qid" & CType(e.Item.DataItem, DataRowView)("callQuestionID") 
       CType(e.Item.FindControl("Panel1"), Panel).Controls.Add(newRBY) 
       Dim newRBN As New RadioButton 
       newRBN.InputAttributes.Add("data-id", CType(e.Item.DataItem, DataRowView)("callQuestionID")) 
       newRBN.InputAttributes.Add("data-idn", CType(e.Item.DataItem, DataRowView)("callQuestionID")) 
       newRBN.ID = "rbn" 
       newRBN.Text = "No" 
       newRBN.GroupName = "qid" & CType(e.Item.DataItem, DataRowView)("callQuestionID") 
       CType(e.Item.FindControl("Panel1"), Panel).Controls.Add(newRBN) 

Beitrag Benutzer-Interaktion Verarbeitung:

For Each questionRow As RepeaterItem In questionRepeater.Items 
    ... 
    Dim rby As RadioButton = CType(questionRow.FindControl("rby"), RadioButton) ****** Fails Here ***** 
       If rby.Checked Then 
        dataAccess.callQuestionAnswerTable_Insert(callIDInteger, CInt(rby.InputAttributes("data-id")), "true") 
       ElseIf CType(questionRow.FindControl("rbn"), RadioButton).Checked Then 
        dataAccess.callQuestionAnswerTable_Insert(callIDInteger, CInt(rby.InputAttributes("data-id")), "false") 
       End If 

Es liegt in der Verarbeitung Post Interaktion mit dem Benutzer schlägt fehl, wenn 'rby' zu finden versuchen. Der einzige Unterschied in generiertem HTML besteht darin, dass die Steuerelement-IDs auf der Inhaltsseite ein MainContent_-Präfix erhalten.

Was kann ich tun, um dies zu beheben?

Antwort

0

Wenn sich der Code auf der untergeordneten Seite befindet, während sich der Repeater auf der Masterseite selbst befindet, müssen Sie die Masterseite mit FindControl angeben und den Repeater dort suchen.

Dim rpt As Repeater = CType(Master.FindControl("Repeater1"),Repeater) 

Und dann

For Each questionRow As RepeaterItem In rpt.Items 

(von C# übersetzt mit einem Code Übersetzer VB, so dass es ein wenig aus sein kann, in C# ist es Repeater rpt = Master.FindControl("Repeater1") as Repeater;)

+0

Beide sind in der untergeordneten Seite. Der einzige Unterschied in der Umgebung besteht darin, dass es eine Masterseite für die eine gibt. –

0

ich mein Problem gefunden. Es war tatsächlich, dass ich die Bindung des Repeaters in einem Block hatte und ich sollte anscheinend nicht haben.

Verwandte Themen