2009-07-09 8 views
0

Ich habe eine Funktion, die mehrere Steuerelemente erstellt. Hauptsächlich Eingabefelder und eine Bildschaltfläche mit dynamischen Daten für eine Amazon-Zahlungsschaltfläche.Fehler beim Hinzufügen mehrerer Steuerelemente zum Platzhalter, zurückgegeben von Funktion

Wie kann ich diese Steuerelemente zu einem Platzhalter hinzufügen, damit sie auf der Seite gerendert werden?

Ich habe versucht, einen Platzhalter innerhalb der Funktion zu erstellen, Steuerelemente hinzufügen und den Platzhalter zurückgeben.

plhCart = returnedPlaceHolder() 

Die Kontrollen jedoch nicht machen, wenn ein plhCart.Controls.Count der Wert war richtig tun.

Dies ist die Funktion, um die Kontrollen zu schaffen und sie zu einem Platzhalter-Objekt hinzu:

Protected Function GetPayNowWidgetForm(ByVal formHiddenInputs As SortedDictionary(Of [String], [String])) As PlaceHolder 
    Dim payButton As New ImageButton 
    Dim plhForm As New PlaceHolder 
    Dim counter As Integer = 1 

    payButton.ID = "imgPayButton" 
    payButton.PostBackUrl = "https://authorize.payments-sandbox.amazon.com/pba/paypipeline" 
    payButton.ImageUrl = "https://authorize.payments-sandbox.amazon.com/pba/images/GMPayNowWithAmazon.png" 

    plhForm.Controls.Add(payButton) 

    ' Add the Key/Value pairs from formHiddenInputs 
    For Each kvp As KeyValuePair(Of [String], [String]) In formHiddenInputs 
     Dim hiddenField As HtmlControl = New HtmlControls.HtmlInputHidden 
     ' Dim hiddenField As New HiddenField 
     hiddenField.Attributes.Add("name", kvp.Key) 
     hiddenField.Attributes.Add("value", kvp.Value) 

     plhForm.Controls.Add(hiddenField) 


     counter += 1 
    Next 

    Return plhForm 
End Function 

ich jetzt

plhCart.Controls.Add(GetPayNowWidgetForm(...)) 
mit Steve Temple Vorschlag und das Hinzufügen dieser zurück auf meiner Seite auf den Platzhalter Platzhalter verwende

Das funktioniert gut und wahrscheinlich besser als das, was ich letzte Nacht herausgefunden habe. Meine ursprüngliche Lösung bestand darin, die Steuerelemente zu erstellen und sie als system.array zurückzugeben. Durchläuft dann das Array, um jedes Steuerelement zum Platzhalter hinzuzufügen.

+0

Können wir mehr des Codes sehen? Fügen Sie den Platzhalter zur Seite hinzu? – womp

Antwort

1

Es ist schwer zu wissen, was genau das Problem ist, ohne ein bisschen mehr zu wissen.

In die Steuerelemente im Page_Init Verfahren wie folgt:

plhCart.Controls.Add (returnedPlaceHolder());

Und das sollte sie addieren und machen sie auf der Seite

+0

Danke, aus welchem ​​Grund auch immer habe ich nicht daran gedacht, meinen zurückgegebenen PlaceHolder als Steuerelement dem Platzhalter auf der Seite hinzuzufügen. – Gthompson83

0

ASP.NET-Seitenlebenszyklus ist tricky.

Verwandte Themen