【问题标题】:Dynamically adding Text fields on C#2008 asp.net page在 C#2008 asp.net 页面上动态添加文本字段
【发布时间】:2010-02-25 01:28:07
【问题描述】:

我的 C# Web 应用程序要求用户输入汽车信息。用户可以添加一辆或多辆汽车的信息(最多 20 辆)。

我的页面有这些文本字段:车号、汽车品牌、汽车年份、里程、VIN 我有一个按钮,允许用户“添加更多汽车” 这个想法是允许用户添加不止一辆车。

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

还有什么其他想法可以让这个目标更容易实现吗?该控件仅用于输入数据,不用于查看任何记录。

【问题讨论】:

    标签: c# asp.net


    【解决方案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】:

      您可以执行以下操作:

      1. 添加占位符或任何其他将容纳文本框的容器控件。
      2. 在设计时将一个文本框放到该容器中。
      3. 添加运行时在用户每次点击“添加更多汽车”时动态添加一个文本框。
      4. 当用户发布表单时,检索容器控件的子元素,这些子元素将成为文本框并循环遍历它们。

      此外,您还可以制作文本框的用户控件(ASCX 文件)以进行更多控制,例如处理事件或为每个文本框添加验证器。然后,每次向容器添加新控件时,您都必须使用 LoadControl("YourTextBox.ascx") 加载用户控件。

      【讨论】:

        【解决方案3】:

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

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

        HTH。

        【讨论】:

        • 我猜Repeater控件不是用于数据输入的,对吗? ListView 听起来像是一个更好的主意。谢谢
        • 不,中继器是列表框的轻量级版本,更老更简单。您可以使用它来显示更多文本框,尽管它可能不是最好的方法。尝试这样:将它们添加到 div(服务器端),然后将这个 div 添加到占位符,这样您就可以将东西放在正确的位置。
        • ListView 非常好用,对 JavaScript/JQuery 友好,并为您处理绑定,这就是我喜欢它的原因。中继器是一个有效的选项...我倾向于使用 ListView 而不是中继器,但这并不是说中继器无效...
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-27
        • 2019-03-03
        • 1970-01-01
        • 2013-02-20
        • 2015-07-17
        相关资源
        最近更新 更多