2

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

我已经尝试了几种方法,但对于看起来如此明显和常见的情况,它们都非常啰嗦。我在想一定有一种我错过的简单方法来做到这一点。

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

这种方法对我有用,但我确信必须有更简单的方法来实现这一点。期待看到其他人如何解决这个问题。

4

3 回答 3

2

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

在此处查看 MSDN 示例,该示例展示了如何使用它。如果您将数据源绑定到它,它将找出列并动态调整,或者您可以预定义所需的列以获得更多可定制性。

于 2013-09-24T20:13:08.007 回答
0

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

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

http://editor.datatables.net/

于 2013-09-27T08:43:44.650 回答
0

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

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

使用此链接了解更多信息

于 2013-09-23T07:42:47.357 回答