У меня есть форма в ASP.NET 3.5. Где много элементов данных, и где у меня есть Сохранить и Добавить Buttions. Мне нужно автоматически сохранять свою форму каждые 2 мин. Каков наилучший способ реализовать эту функцию в ASP.NET.Автоматическое сохранение формы
ответ
А, прости, я снова посмотрел на то, с чем вы связались. Это можно было бы сделать на самом деле. Хотя вы столкнулись с потенциальными ошибками валидатора, о которых я упоминаю в своем ответе. И тогда postbacks могут быть немного раздражающими, когда вы не просите их. Но все же, я бы взял backvote, если StackOverflow позволит мне. –
Я долгое время боролся с той же проблемой. Проблема заключалась в том, что я не хотел сохранять в обычные таблицы базы данных, потому что это потребовало бы проверки (проверки целых чисел, валют, дат и т. Д.). И я не хотел называть пользователя об этом, когда они могут пытаться уйти.
В итоге я столкнулся с таблицей AjaxSavedData и делал вызовы Ajax для ее заполнения. AjaxSavedData является постоянной таблицей в базе данных, но содержащиеся в ней данные имеют тенденцию быть временными. Другими словами, он временно сохранит данные пользователя, пока они фактически не завершат страницу и не перейдут на следующую.
таблица состоит всего из нескольких колонок:
AjaxSavedDataID - INT:
Первичный ключ.
Идентификатор_пользователя - INT:
Идентификация пользователя (достаточно легко).
PageName - VARCHAR (100):
Необходимо, если вы работаете с несколькими страницами.
ControlID - VARCHAR (100):
Я называю это ControlID, но это действительно только свойство ClientID что .NET предоставляет для всех WebControls. Так, если, например, txtEmail находился внутри пользовательского элемента управления Contact, то ClientID будет Contact_txtEmail.
Значение - VARCHAR (MAX):
Значение пользователь ввел для данной области или контролем.
DateChanged - DateTime:
значение было добавлено или дата изменения.
Наряду с некоторыми пользовательскими элементами управления эта система позволяет легко «просто работать». На нашем сайте ClientID каждого текстового поля, выпадающего списка, радиообмена и т. Д. Гарантированно будет уникальным и последовательным для данной страницы. Поэтому я смог написать все это, чтобы поиск сохраненных данных работал автоматически. Другими словами, мне не нужно подключать эту функцию каждый раз, когда я добавляю некоторые поля в форму.
Эта функция автоматического сохранения будет превращаться в очень динамичное приложение для онлайн-страхования бизнеса на techinsurance.com, чтобы сделать его более удобным для пользователя.
В случае, если вы заинтересованы, вот Javascript, что позволяет автосохранение:
function getNewHTTPObject() {
var xmlhttp;
/** Special IE only code */
/*@cc_on
@if (@_jscript_version >= 5)
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (E) {
xmlhttp = false;
}
}
@else
xmlhttp = false;
@end
@*/
/** Every other browser on the planet */
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
try {
xmlhttp = new XMLHttpRequest();
}
catch (e) {
xmlhttp = false;
}
}
return xmlhttp;
}
function AjaxSend(url, myfunction) {
var xmlHttp = getNewHTTPObject();
url = url + "&_did=" + Date();
xmlHttp.open("GET", url, true);
var requestTimer = setTimeout(function() { xmlHttp.abort(); }, 2000);
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2005 00:00:00 GMT");
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState != 4)
return;
var result = xmlHttp.responseText;
myfunction(result);
};
xmlHttp.send(null);
}
// Autosave functions
var SaveQueue = []; // contains id's to the DOM object where the value can be found
var SaveQueueID = []; // contains id's for binding references (not always the same)
function ArrayContains(arr, value) {
for (i = 0; i < arr.length; i++) {
if (arr[i] == value)
return true;
}
return false;
}
function GetShortTime() {
var a_p = "";
var d = new Date();
var curr_hour = d.getHours();
if (curr_hour < 12)
a_p = "AM";
else
a_p = "PM";
if (curr_hour == 0)
curr_hour = 12;
else if (curr_hour > 12)
curr_hour = curr_hour - 12;
var curr_min = d.getMinutes();
curr_min = curr_min + "";
if (curr_min.length == 1)
curr_min = "0" + curr_min;
return curr_hour + ":" + curr_min + " " + a_p;
}
function Saved(result) {
if (result == "OK") {
document.getElementById("divAutoSaved").innerHTML = "Application auto-saved at " + GetShortTime();
document.getElementById("divAutoSaved").style.display = "";
}
else {
document.getElementById("divAutoSaved").innerHTML = result;
document.getElementById("divAutoSaved").style.display = "";
}
}
function getQueryString(name, defaultValue) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] == name) {
return pair[1];
}
}
return defaultValue;
}
function urlencode(str) {
return escape(str).replace(/\+/g, '%2B').replace(/%20/g, '+').replace(/\*/g, '%2A').replace(/\//g, '%2F').replace(/@/g, '%40');
}
function AutoSave() {
if (SaveQueue.length > 0) {
var url = "/AjaxAutoSave.aspx?step=" + getQueryString("step", "ContactInformation");
for (i = 0; i < SaveQueue.length; i++) {
switch (document.getElementById(SaveQueue[i]).type) {
case "radio":
if (document.getElementById(SaveQueue[i]).checked)
url += "&" + SaveQueueID[i] + "=" + urlencode(document.getElementById(SaveQueue[i]).value);
break;
case "checkbox":
if (document.getElementById(SaveQueue[i]).checked)
url += "&" + SaveQueueID[i] + "=" + urlencode(document.getElementById(SaveQueue[i]).value);
default:
url += "&" + SaveQueueID[i] + "=" + urlencode(document.getElementById(SaveQueue[i]).value);
}
}
SaveQueue = [];
SaveQueueID = [];
AjaxSend(url, Saved);
}
}
function AddToQueue(elem, id) {
if (id == null || id.length == 0)
id = elem.id;
if (!ArrayContains(SaveQueueID, id)) {
SaveQueue[SaveQueue.length] = elem.id;
SaveQueueID[SaveQueueID.length] = id;
}
}
Добавьте к вашей странице, чтобы сделать эту работу:
window.setInterval("AutoSave()", 5000);
И применить это к Textbox, DropDownList, Listbox или Checkbox вам просто нужно добавить этот атрибут:
onchange="AddToQueue(this)"
... или это для RadioButtonList или CheckBoxList:
onchange="AddToQueue(this, '" + this.ClientID + "')"
Я уверен, что Javascript может быть упрощена совсем немного, если вы использовали JQuery, так что вы можете рассмотреть вопрос о том, что. Но в любом случае AJAX - это то, что нужно использовать. Это то, что Google использует для автоматического сохранения вашего сообщения электронной почты в gmail, и то же самое происходит в блогере, когда вы пишете новый пост. Поэтому я принял эту концепцию и применил ее к огромному приложению ASP.NET с сотнями элементов формы, и все это прекрасно работает.
- 1. Автоматическое сохранение HTML вход
- 2. JPA отключить автоматическое сохранение
- 3. Автоматическое сохранение формы HTML в хранилище сеансов в AngularJS
- 4. Основные данные автоматическое сохранение и ручное сохранение
- 5. Автоматическое заполнение веб-формы
- 6. Сохранение неполной формы Django
- 7. Автоматическое сохранение и загрузка истории
- 8. Автоматическое сохранение содержимого текстового поля
- 9. Автоматическое сохранение в редакторе Atom
- 10. Как сделать автоматическое сохранение приложения?
- 11. Автоматическое сохранение итоговой таблицы регрессии
- 12. Автоматическое сохранение сюжета, python, matplotlib
- 13. Немедленное автоматическое сохранение с ветерком
- 14. Автоматическое сохранение данных в D
- 15. Отключить автоматическое сохранение в UIManagedDocument
- 16. Автоматическое сохранение видеоролика для печати
- 17. Автоматическое сохранение сложного Java-объекта
- 18. MongoDB - Автоматическое сохранение целостности данных
- 19. Автоматическое увеличение пульсации формы волны
- 20. Автоматическое заполнение формы в Rails?
- 21. Python: Автоматическое создание формы Google
- 22. Сохранение частичного прогресса формы
- 23. Сохранение и обновление формы
- 24. Сохранение заявки/формы активна
- 25. Сохранение данных формы JSP
- 26. Сохранение данных формы
- 27. Сохранение формы фокуса
- 28. Сохранение автора формы Web2Py
- 29. Сохранение баллов из формы
- 30. Сохранение формы не работает
http://stackoverflow.com/questions/875834/asp-net-forms-autosave – Nick