在C#2008 asp.net页面上动态添加文本字段

时间:2010-02-24 16:23:37

标签: c# asp.net

我的C#网络应用程序要求用户输入汽车信息。用户可以添加一个或更多自动信息(最多20个)。

我的页面包含以下文本字段:汽车编号,汽车制造,汽车年份,里程,VIN 我有一个按钮,允许用户“添加更多汽车” 这个想法是允许用户添加多辆汽车。

当用户点击“添加更多汽车”时,如何动态显示文本框,并跟踪用户添加的汽车数量(为了将它们加载到数组并写入数据库)

使这个目标更容易的任何其他想法?该控件仅用于输入数据,而不用于查看任何记录。

3 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

  1. 添加占位符或任何其他容纳文本框的容器控件。
  2. 在设计时将一个文本框放入该容器。
  3. 每次用户点击“添加更多汽车”时,添加运行时动态添加文本框。
  4. 当用户发布表单时检索容器控件的子元素,这些元素将成为文本框并循环显示。
  5. 您还可以制作文本框的用户控件(ASCX文件),以便更好地控制,例如处理事件或为每个文本框添加验证器。然后,每次向容器添加新的用户控件时,都必须使用LoadControl(“YourTextBox.ascx”)加载用户控件。

答案 1 :(得分:1)

我喜欢使用占位符并添加用户控件。它工作得很好,非常模块化。这是一个快速示例,我根据列表添加一些控件。你会注意到我将一个对象传递给我的用户控件,允许它隐藏或显示自己,根据权限显示某些选项等。您可以轻松修改此代码以添加事件:

for (int i = 0; i < comments.Count; i++)
            {
                controls.Comment commentCtrl = (controls.Comment)Page.LoadControl("~/userControls/Comment.ascx");
                commentCtrl.ID = "commentUserCtrl" + i;
                commentCtrl.setComment((myCommentObj)comments[i]);

                placeHolderComments.Controls.Add(commentCtrl);
            }

答案 2 :(得分:0)

使用ListView显示输入的汽车列表。创建一个InsertItem模板,该模板具有插入新车的模板,并且在插入时,通过重新加载记录来更新数据库,允许它们插入。您可以使用UpdatePanel包装它以使其异步。

OR

如果您需要纯客户端方法,请使用JavaScript以可编程方式创建每个条目,然后使用通用方案创建控件。然后,您可以检查表单集合中的已发布值并提取所有值,或者通过客户端的Web服务将数据流回服务器。

HTH。