加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

如何使用asp.net克隆/复制控件(带子控件)?

发布时间:2020-12-16 07:38:36 所属栏目:asp.Net 来源:网络整理
导读:到目前为止,我已经尝试了在网上和网上其他地方找到的一些不同的解决方案.也许你们其中一个知识渊博的人可能会帮助… 我有一堆由用户动态创建的控件,我将其作为控件集合存储在会话状态中,因此我可以在每次回发时显示它们. 用户生成的每个控件都是一个div,其中
到目前为止,我已经尝试了在网上和网上其他地方找到的一些不同的解决方案.也许你们其中一个知识渊博的人可能会帮助…

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

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

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

当用户点击“Duplicate”时,我正在调用处理事件的web方法.

当我的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."

任何人都可以请帮助指出我正确的方向让这个工作?

谢谢阅读 !

解决方法

我不明白你的要求,但如果你能在客户端做到这一点,那么jquery clone方法将是一个不错的选择.

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读