Вопрос

Допустим, вы извлекаете 100 записей и отображаете их на странице.Пользователь обновляет только две записи на странице.Теперь вы хотите обновить только две записи, а не остальные 98.

Лучше всего разместить на странице одну отправку, затем каким-то образом узнать, какие из двух обновлены, а затем отправить только эти две в базу данных для обновления?

Как выглядит это «как-то»?

Или у вас будет кнопка отправки обновления для каждой строки, и она будет обновлять только запись, к которой она привязана?

Это было полезно?

Решение

Конечно, есть разные способы сделать это. В общем, вы можете избежать некоторых проблем и обработки на стороне сервера, используя Javascript для сбора данных POST только для тех записей, которые были изменены. Две мысли о том, как это может работать:

1) Пройдите по маршруту ajax и выполните live -редактирование. Таким образом, записи представлены в таблице и представляются недоступными для редактирования. Когда пользователь щелкает конкретную строку, эта строка становится редактируемой с помощью Javascript для создания соответствующей HTML-формы на лету. Затем используйте кнопку отправки или какой-либо другой обработчик (скажем, перемещение фокуса на другую строку таблицы), который будет запускать POST, который обновляет БД (асинхронно через предпочитаемый метод ajax). К счастью, основные платформы Javascript могут сильно помочь в этой области.

2) Флажки - всякий раз, когда строка редактируется, ее флажок становится установленным. Когда кнопка отправки нажата, используйте javascript, чтобы опубликовать данные POST, захватывая все подряд, чей флажок отмечен. Пользователь может снять флажок, чтобы отменить изменения в этой строке перед отправкой.

Другие советы

Ajax, используя jQuery или какую-либо другую библиотеку JavaScript, и вставьте и обновите кнопку в каждой строке.

Существует много ответов на этот вопрос, и в некоторой степени они зависят от ваших инструментов разработки и «чувства». сайта.

Если бы вы реализовывали вызовы Ajax для построчного обновления, то логически казалось бы правильным иметь кнопку на строку, а затем обновлять ее вызовом Ajax при изменении строки.

Это также просто сценарий, для которого были разработаны отключенные наборы данных, и ADO.net очень хорошо справляется с этим.

Как и всегда, ответ таков: «Это зависит!»

Вы можете использовать JavaScript, чтобы пометить каждое поле как измененное, когда пользователь меняет поле ввода.Создайте скрытые поля с идентификатором обновляемой строки и грязным флагом.(например, is_dirty_$id) В JavaScript создайте обработчик onChange, который устанавливает скрытое поле как грязное.при изменении любого входа.

Альтернативно вы можете создать скрытые поля для каждого отображаемого реального поля.скрытое поле будет содержать начальные значения.проверьте каждое поле на стороне сервера, чтобы определить, что изменилось.

Вероятно, вы захотите сохранить дату последнего_изменения в виде скрытого поля для каждой записи.Таким образом, если другой пользователь обновит ту же запись, вы можете отобразить сообщение об ошибке «эта запись была обновлена ​​другим пользователем» или подобное.

Одна кнопка отправки. Я мог бы предвидеть случай, когда я мог бы использовать более одного, но в общем случае только один. (Обратите внимание, это похоже на вопрос веб-страницы, поэтому я отвечаю с таким предположением.)

На ум приходит 3 способа, которыми вы можете обработать отслеживание изменений:

JavaScript: добавьте функцию onChange () к элементам управления, которые обновляют скрытое поле. Если это скрытое значение, обновите связанную запись. Требует JS в браузере и не сообщает какие поля обновлять, какие записи.

Множество полей формы: поместите скрытое поле с каждым элементом управления и сравните их все, когда они вернутся. Это было бы некрасиво, но это позволило бы вам узнать, какие поля обновлять (а не только запись). Это также позволит вам узнать, отменил ли кто-то начатое изменение.

Сеансы: вы можете поместить исходные значения в переменные сеанса, а затем выполнить сравнение при возврате значений. Это было бы немного более элегантно, чем множество скрытых полей, и менее открыто для людей, играющих с опубликованными данными (так как вы никогда не должны доверять всему, что возвращается, даже в скрытых полях). Требуются файлы cookie в браузере и сеансы по технологии сервера.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top