【问题标题】:How to clone / copy a control (with child controls) using asp.net?如何使用 asp.net 克隆/复制控件(带有子控件)?
【发布时间】:2012-06-02 19:00:19
【问题描述】:

到目前为止,我已经尝试了在这里和网络上其他地方找到的几种不同的解决方案,但都没有运气。也许你们中的一位知识渊博的人可以提供帮助......

我有一堆由用户动态创建的控件,我将它们存储为会话状态中的控件集合,以便我可以在每次回发时显示它们。

用户生成的每个控件都是一个 div,其中包含其他控件。

我在每个控件上都有一个按钮,允许用户删除或复制控件。

当用户点击“复制”时,我正在调用处理事件的网络方法。

当我的 web 方法发现要复制的控件时,我想复制该控件并将其添加到页面(另一个函数处理将其保存到控件集合(在 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

还有 Clone_Control 功能:

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

不幸的是;以 PropertyInfo.SetValue... 开头的行 总是出错:

"Exception has been thrown by the target of an invocation."

当我查看 InnerException 时:

"Cannot get inner content of dynDiv_FormCtrl_Wrapper_10432 because the contents are not literal."

任何人都可以帮我指出正确的方向以使其正常工作吗?

感谢阅读!

【问题讨论】:

    标签: asp.net vb.net clone dynamic-controls


    【解决方案1】:

    我没有清楚地理解您的要求,但是如果您可以在客户端执行此操作,那么 jquery clone 方法将是一个不错的选择。

    .clone() 方法执行匹配元素集的深度复制,这意味着它复制匹配的元素以及它们的所有后代元素和文本节点。

    欲了解更多信息Jquery .clone()

    【讨论】:

    • 感谢您的建议,但我确实需要通过我的网络方法来执行此操作。我不敢相信简单地克隆一个控件这么难!
    猜你喜欢
    • 2014-02-03
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    相关资源
    最近更新 更多