将信息从一个动态创建的用户控件复制到另一个动态创建的用户控件

时间:2009-06-12 17:42:39

标签: asp.net javascript user-controls copy

我的ASP.NET WebForm上有一个占位符,动态添加了用户控件。控件大多都有文本框。有时有两个用户控件,有时候有十个。一切都按预期工作。我的问题是关于如何实现新功能。

我的客户有新请求将数据从第一个控件复制到另一个控件,检查与相关附加控件相关联的复选框。

首先,这听起来很简单...为每个用户控件的占位符添加一个复选框,然后编写一些JavaScript以将数据从第一个控件复制到其他控件。然后我意识到,通过这些文本框在用户控件中,我实际上无法直接修改HTML输入。

接下来我开始考虑添加会自动回发的复选框,但是如何动态地向占位符添加复选框,然后想出一种向复选框添加事件处理程序并传递必要信息的方法循环控件并复制值。这种方法似乎过于复杂,需要太多的开销来实现我的目标。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您提到由于复选框位于用户控件中,因此您无权访问它们。

您是否可以使用用户控件的属性公开ClientID,然后在javascript中使用它们?像这样:

user_control {
   int checkboxId { get { return checkbox.ClientId; } }
}

如果您有更多有用的代码......

答案 1 :(得分:0)

这可能为时已晚,无法帮助你,但另外一个答案就是...... 将复选框作为用户控件的一部分包括在内可以大大简化问题。

我遇到了类似的情况,用户控件中可能有10-15个UI控件,其中一个复选框与第一个相关联,当选中时,表示我应该将信息从第一个用户控件复制到所有其他

由于它都是在代码隐藏中构建的,所以我只是暴露了名为ShowCheckBox的用户控件的布尔属性,该属性切换了复选框的可见性。我在第一个中将其设置为true,在所有其他中将其设置为false。因此,我知道只能通过单击第一个用户控件的复选框来引发事件。然后,在复选框的事件处理程序中,我处理了从第一个用户控件到所有其他控件的复制。 (顺便说一下,一定要在那个复选框上设置AutoPostBack=true,否则你会想知道为什么事件没有解雇。)

Javascript肯定会提供更好的用户体验,但这对我有用,并没有要求我弄清楚如何将ClientId值放入javascript中。 (虽然这正是我现在需要做的,这就是我偶然发现这个问题。:-))