0

我必须在 asp.net 网络表单中创建一个数据输入表单,用户可以在其中输入多个成员详细信息。每个成员详细信息将包含大约二十个数据项,例如名字、姓氏、出生日期等。输入的成员数量可以是 1 到 20 之间的任意值。

一旦所有成员进入或进入过程中,他们应该能够转到上一个或下一个条目并进行更改。本质上应该有一个将遍历页面的下一个和上一个按钮。最后,单击“保存”按钮时,应保存所有输入的数据。

我创建了一个 UserControl,其中包含用于输入数据的所有文本框。我创建了五个硬编码面板,它们显示用户控件五次。这使得可以进入的成员总数为五个。

当单击下一个按钮时,我想用动态添加的面板替换这个硬编码模型。

请让我知道如何实现这一目标。或者如果有更好的架构,请告诉我。我尝试了向导控件,但是在维护之前输入的值和使用 Next 和 Previous 按钮遍历数据方面太麻烦了。

谢谢

4

3 回答 3

1

您可以使用以下方法将控件动态添加到页面:

Page.Controls.Add(new MyControl());

您必须为在控件中输入的数据找到一个临时存储区,例如 Session。

Session["addedControls"] = myControls;

您可以跟踪他们添加的控件数量,然后循环并将所有数据保存到您正在使用的任何永久存储中。

这里有一个例子:http: //howto.jamescarnley.com/2008/05/adding-fields-dynamically-in-aspnet.html

将整个控件存储在会话中确实有它的缺点,例如所涉及的开销,您可以只存储更有效的数据,但要付出更多的努力来实现。这也只有在他们启用了 cookie 时才有效。

或者,您可以为他们提供一个下拉列表,以选择他们希望创建的条目数,并通过调用 Page.Controls.Add 所需的次数来显示该控件数。然后最后将它们全部保存。

于 2012-10-06T11:35:10.013 回答
0

您可以在 javascript 中轻松地动态添加输入新成员所需的控件。你的提议对我来说听起来像是一场噩梦。我会建立一个页面,其中包含添加成员和“添加成员”按钮的控件。单击“添加成员”按钮时 - 我会将成员保存到数据库中,检索在此会话中添加的成员列表 - 并在页面“添加成员”区域右侧的列表中显示成员的名称. 如果他们想审查成员,他们可以单击他们的名字,您可以显示该成员已准备好进行编辑。或者他们可以添加另一个成员,直到他们完成。您正在尝试做的事情将成为管理的噩梦,并且不会让用户更容易使用。

于 2014-08-20T12:29:50.437 回答
0

使用动态控件将非常困难并且对用户不友好,因为它可能需要刷新页面或使用更新面板

在您的情况下,我建议使用 Knockout 从 JavaScript 完成所有操作,这是一个完整的示例Knockout Grid

确保在添加或编辑网格后,您将使用 JSON.Stringify 将 JavaScript 对象序列化为字符串,并将此文本添加到隐藏字段。

提交表单时,只需获取隐藏字段值,使用 newtonsoft json 库将字符串转换为对象,并免费使用该对象,该对象将成为您的模型列表(例如:订单)。

与动态控制器相比,这更易于管理和用户友好

于 2016-03-21T16:01:30.890 回答