C# asp.net中用于编辑数据库表的多行输入

C# asp.net中用于编辑数据库表的多行输入,c#,asp.net,sql,webforms,C#,Asp.net,Sql,Webforms,有时,我需要创建一个允许多行输入的输入控件,在每种情况下,输入的类型和列数可能不同,但通常表示正在编辑的数据库表,因此还可以在每行中存储一个id值。如果用户有更多的数据要输入,也可以向输入中添加新行 我已经尝试了几种方法,但它们都是非常冗长的,似乎是这样一个明显和常见的情况。我在想,一定有一个简单的方法来做到这一点,我错过了 我通常解决这个问题的方法是使用列表视图,输入项目模板中所需的所有输入控件,并使用html表格进行格式化,每个项目都是表格中的一行。如果存在要编辑的现有数据,我将从数据库加载

有时,我需要创建一个允许多行输入的输入控件,在每种情况下,输入的类型和列数可能不同,但通常表示正在编辑的数据库表,因此还可以在每行中存储一个id值。如果用户有更多的数据要输入,也可以向输入中添加新行

我已经尝试了几种方法,但它们都是非常冗长的,似乎是这样一个明显和常见的情况。我在想,一定有一个简单的方法来做到这一点,我错过了

我通常解决这个问题的方法是使用列表视图,输入项目模板中所需的所有输入控件,并使用html表格进行格式化,每个项目都是表格中的一行。如果存在要编辑的现有数据,我将从数据库加载数据,向结果中添加一个空白对象,并将其绑定到列表视图。如果没有现有数据,我将创建一个包含空白记录的集合,并将其绑定到列表视图。我添加了一个用于添加新行的按钮。单击此按钮时,通过迭代所有listview项并将数据填充到集合中,从列表视图检索所有现有数据,然后我将向集合中添加一个空白对象并使用结果重新绑定listview。保存时,我将通过再次迭代listview项并在每行中使用隐藏字段存储记录id来检索结果。这将确定是添加了新记录还是编辑了现有记录


这种方法对我很有效,但我相信一定有更简单的方法来实现这一点。期待看到其他人如何解决此问题。

您正在谈论批量插入/更新。为此,可以使用XML插入/更新。将所有数据获取到
数据集ds
变量。然后使用
ds.GetXml()
方法将数据集转换为XML字符串。将此参数传递给数据类型为“XML”的SQL server中的XML参数

INSERT INTO YOURTABLE
    SELECT
        V.VOI.value('(.)[1]', 'int')
    FROM
        @Input.nodes('/DATASETNAME/DATATABLENAME/') V(VOI)

使用此项了解更多信息

对于web表单,请使用GridView。您可以将其属性设置为允许编辑、删除、新行、排序和分页


查看演示如何使用它的MSDN示例。如果您将数据源绑定到它,它将计算出列并动态调整,或者您可以预定义所需的列以实现更高的可定制性。

您需要对每个数据执行添加、查看、编辑和删除操作的动态表

我建议使用DataTable Jquery组件。有大量关于数据操作的示例,您可以将其与包括ASP.net在内的任何服务器技术相结合


为什么不简单地将数据绑定到可编辑的GridView?几乎所有内容都可以在页面的ASPX标记中声明,所有内容(添加、编辑、删除、更新)都会自动处理。这听起来像是我在寻找的答案。我会试试看。