假设你检索了100条记录,并在页面上显示它们。用户仅更新页面上的2条记录。现在您只想更新两个记录,而不是其他98个记录。

最好在页面上有一个提交,然后以某种方式知道哪两个更新,然后只将这两个发送到数据库进行更新?

“以某种方式”是什么?看起来像?

或者,您是否每行都有一个更新提交按钮,并且只更新与其相关的记录?

有帮助吗?

解决方案

当然,有不同的方法可以做到这一点。通常,通过使用Javascript仅为已更改的记录组装POST数据,可以节省一些麻烦和服务器端处理。关于这可能如何运作的两点想法:

1)转到ajax路线并进行直播 - 编辑。因此,记录显示在表格中,看起来是不可编辑的。当用户单击特定行时,通过使用Javascript动态创建相应的html表单,该行变得可编辑。然后有一个提交按钮或一些其他处理程序(比如,将焦点移动到另一个表行),这将触发更新DB的POST(通过您首选的ajax方法异步)。令人高兴的是,主流Javascript框架在这方面可以提供很多帮助。

2)复选框 - 无论何时编辑行,都会选中其复选框。单击提交按钮时,使用javascript通过抓取选中复选框的行中的所有内容来发布POST数据。在提交之前,用户可以取消选中一个框以取消对该行的更改。

其他提示

Ajax它使用jQuery或其他一些JavaScript库以及每行的put和update按钮。

这个问题有很多答案,在某种程度上,它们取决于你的开发工具和“感觉”。该网站。

如果您正在逐行执行Ajax调用以进行更新,那么从逻辑上看,每行都有一个按钮,然后在更改行时使用Ajax调用更新它。

这也是断开连接的数据集旨在解决的场景,ADO.net非常好地处理这些场景。

一如既往,答案是“它取决于!”

当用户更改输入字段时,您可以使用JavaScript将每个字段标记为已更改。创建一个隐藏字段,其中包含要更新的行的ID和脏标志。 (如is_dirty_ $ id)在JavaScript中,创建一个onChange处理程序,将隐藏字段设置为脏。当任何输入被改变时。

或者,您可以为显示的每个真实字段创建隐藏字段。隐藏字段将包含初始值。检查服务器端的每个字段以确定更改的内容。

您可能希望将last_modified日期存储为每条记录的隐藏字段。这样,如果另一个用户更新了相同的记录,您可以显示一条错误消息,说“此记录已由另一个用户更新”。或类似的。

一个提交按钮。我可以预见我可能会使用多于一个的情况,但在一般情况下只有一个。 (注意,这看起来像是一个网页问题,所以我正在回答这个假设。)

您可以通过3种方式来处理跟踪更改:

JavaScript:在更新隐藏字段的控件上放置onChange()函数。如果隐藏有值,则更新关联记录。在浏览器上需要JS,并且不会告诉您要更新哪些字段,只记录哪些记录。

许多表单字段:为每个控件放置一个隐藏字段,并在它们返回时将它们全部比较。这将是丑陋的,但它将允许您知道要更新的字段(而不仅仅是记录)。它还可以让您知道是否有人解除了开始的更改。

会话:您可以将原始值放在会话变量中,然后在值返回时进行比较。这会比许多隐藏的字段更优雅,并且对于使用发布的返回数据的人不太开放(因为你永远不会相信任何回来的东西,即使在隐藏的字段中)。需要浏览器上的cookie和服务器技术上的会话。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top