【问题标题】:Adding rows to a table based on user input (ASP.NEt)根据用户输入向表中添加行 (ASP.NET)
【发布时间】:2010-01-19 06:29:12
【问题描述】:

我有一个文本框输入字段,用户将在其中输入一个整数值。然后有一个“创建”按钮,点击它时必须生成一个包含 2 列的表: “名称”和“电子邮件”是列标题。

我希望每一行在每一列中都有一个文本框。

所有这些都必须在单击按钮后发生。我发现如果您在 ASP.NET 中动态添加控件(我使用的是 C#),那么这些控件会在回发期间丢失。而且我不知道如何防止这种情况发生。

有人可以给我一些关于如何将行动态添加到表中的想法(我尝试使用 asp.net 服务器端表控件,但遇到了“lost-during-postback”问题 - 我可以尝试一下吗?像 gridview 之类的其他东西?但是如果没有数据绑定到它,afaik GV 将无法工作)

需要注意的是,我的表格有用于用户输入的文本框,它不是用于显示数据..而是用于接受来自用户的数据,这些数据稍后将用于将详细信息保存到数据库中。

【问题讨论】:

    标签: c# asp.net dynamic-data


    【解决方案1】:

    动态控制

    这涉及到。这是一个有趣的article 关于动态控件的问题。

    我认为通常情况下,如果您创建动态控件,那么您有责任在回发时重新创建它们;但是,如果 Init 事件与您的应用程序配合使用,则本文包含一种使用 Init 事件的方法。

    编辑:

    或常规 ASP.NET 控件

    您可以使用数据绑定的 ASP.NET 控件,例如:DataList、Repeater、GridView 等(您可以将文本框和所有其他类型的控件放入其中以在每一行中重复 - 或“项目”)并绑定值给它。如果您需要先对用户输入进行一些处理,然后生成一个内部数组、列表、字典、数据表等(您的选择)并将该数据作为数据源绑定到选择的 ASP.NET 控件。

    aspnetControl.DataSource = myDataTable;
    aspnetControl.DataBind();
    

    aspnetControl.DataSourceId = "name_of_control";
    

    有多种方法可以分配数据源。

    这样您就不会遇到与创建动态控件相同的问题;但是,要促进这种方式也有很多东西要学习。

    【讨论】:

    • 谢谢,但没有更简单的方法吗?
    • 我做了一个编辑,虽然我不知道它是否更简单。我将把它留给其他人提供更详细的答案或更简单的答案。
    猜你喜欢
    • 2018-07-15
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 2023-02-01
    • 1970-01-01
    • 2018-06-13
    相关资源
    最近更新 更多