假设你检索了100条记录,并在页面上显示它们。用户仅更新页面上的2条记录。现在您只想更新两个记录,而不是其他98个记录。
最好在页面上有一个提交,然后以某种方式知道哪两个更新,然后只将这两个发送到数据库进行更新?
“某种程度”是什么样的?
或者,您是否每行都有一个更新提交按钮,并且只更新与其相关的记录?
答案 0 :(得分:1)
当然,有不同的方法可以做到这一点。通常,通过使用Javascript仅为已更改的记录组装POST数据,可以节省一些麻烦和服务器端处理。关于这可能如何运作的两点想法:
1)转到ajax路线并进行直播 - 编辑。因此,记录显示在表格中,看起来是不可编辑的。当用户单击特定行时,通过使用Javascript动态创建相应的html表单,该行变得可编辑。然后有一个提交按钮或一些其他处理程序(比如,将焦点移动到另一个表行),这将触发更新DB的POST(通过您首选的ajax方法异步)。令人高兴的是,主流Javascript框架在这方面可以提供很多帮助。
2)复选框 - 无论何时编辑行,都会选中其复选框。单击提交按钮时,使用javascript通过抓取选中复选框的行中的所有内容来发布POST数据。在提交之前,用户可以取消选中一个框以取消对该行的更改。
答案 1 :(得分:0)
Ajax它使用jQuery或其他一些JavaScript库以及每行的put和update按钮。
答案 2 :(得分:0)
这个问题有很多答案,在某种程度上它们取决于你的开发工具和网站的“感觉”。
如果您正在逐行执行Ajax调用以进行更新,那么从逻辑上看,每行都有一个按钮,然后在更改行时使用Ajax调用更新它。
这也是断开连接的数据集旨在解决的场景,ADO.net非常好地处理这些场景。
一如既往,答案是“它取决于!”
答案 3 :(得分:0)
当用户更改输入字段时,您可以使用JavaScript将每个字段标记为已更改。创建一个隐藏字段,其中包含要更新的行的ID和脏标志。 (如is_dirty_ $ id)在JavaScript中,创建一个onChange处理程序,将隐藏字段设置为脏。当任何输入被改变时。
或者,您可以为显示的每个真实字段创建隐藏字段。隐藏字段将包含初始值。检查服务器端的每个字段以确定更改的内容。
您可能希望将last_modified日期存储为每条记录的隐藏字段。这样,如果另一个用户更新了相同的记录,您可以显示错误消息“此记录已被其他用户更新”或类似信息。
答案 4 :(得分:-1)
一个提交按钮。我可以预见我可能会使用多于一个的情况,但在一般情况下只有一个。 (注意,这看起来像是一个网页问题,所以我正在回答这个假设。)
您可以通过3种方式来处理跟踪更改:
JavaScript:在更新隐藏字段的控件上放置onChange()函数。如果隐藏有值,则更新关联记录。在浏览器上需要JS,并且不会告诉您要更新哪些字段,只记录哪些记录。
许多表单字段:为每个控件放置一个隐藏字段,并在它们返回时将它们全部比较。这将是丑陋的,但它将允许您知道要更新的字段(而不仅仅是记录)。它还可以让您知道是否有人解除了开始的更改。
会话:您可以将原始值放在会话变量中,然后在值返回时进行比较。这会比许多隐藏的字段更优雅,并且对于使用发布的返回数据的人不太开放(因为你永远不会相信任何回来的东西,即使在隐藏的字段中)。需要浏览器上的cookie和服务器技术上的会话。