Ich habe ein paar verschiedene Lösungen hier und anderswo im Internet ohne Glück bisher versucht. Vielleicht kann einer von Ihnen wissen viel Los kann helfen ...Wie klonen/kopieren Sie ein Steuerelement (mit untergeordneten Steuerelementen) mit asp.net?
Ich habe eine Reihe von dynamisch erstellten Steuerelemente vom Benutzer, die ich als Steuerelement Sammlung im Sitzungszustand speichern, so dass ich sie auf jedem Postback anzeigen können .
Jedes Steuerelement, das der Benutzer generiert, ist ein div mit anderen Steuerelementen darin.
Ich habe eine Schaltfläche auf jedem Steuerelement, mit dem der Benutzer entweder das Steuerelement löschen oder duplizieren kann.
Wenn der Benutzer auf "Duplicate" klickt, rufe ich meine Webmethode auf, die das Ereignis behandelt.
Wenn meine Web-Methode die Steuerung dupliziert werden findet, ich möchte eine Kopie dieser Kontrolle machen und es auf die Seite (eine andere Funktion Angebote hinzufügen, damit die Steuer Sammlung speichern (auf Page_Unload)
Dim DupCtrl As Control = Nothing
Dim int As Integer = myDynControls.Count
For i = 0 To int - 1
If myDynControls(i).ID.Contains(ctrlID) Then
DupCtrl = Clone_Control(myDynControls(i))
Exit For
End If
Next
End Function
Und die Clone_Control Funktion:
Public Shared Function Clone_Control(OriginalControl As Object) As Object
Dim type As Type = OriginalControl.[GetType]()
Dim properties As Reflection.PropertyInfo() = type.GetProperties()
Dim retObject As [Object] = type.InvokeMember("", System.Reflection.BindingFlags.CreateInstance, Nothing, OriginalControl, Nothing)
For Each propertyInfo As Reflection.PropertyInfo In properties
If propertyInfo.CanWrite Then
propertyInfo.SetValue(retObject, propertyInfo.GetValue(OriginalControl, Nothing), Nothing)
End If
Next
Return retObject
End Function
Leider, die Linie, die PropertyInfo.SetValue beginnt .... immer Fehler mit:
"Exception has been thrown by the target of an invocation."
und wenn ich mir die Innerexception:
"Cannot get inner content of dynDiv_FormCtrl_Wrapper_10432 because the contents are not literal."
Kann jemand bitte in die richtige Richtung zeigen mir helfen, diese Funktion zu erhalten?
Danke fürs Lesen!
Vielen Dank für Ihre Ratschläge, aber ich brauche das wirklich über meine Web-Methode zu tun. Ich kann nicht glauben, dass es so schwierig ist, einfach einen Klon einer Kontrolle zu machen! – wotney