Как выровнять строку до обратной передачи

125
15

У меня есть таблица, созданная в DataList в ASP.Net. В этой таблице есть три поля текста, затем поле с кнопкой редактирования и поле с кнопкой удаления. Когда человек нажимает кнопку "Удалить", он отправляет сообщения назад, удаляет элементы и снова связывает DataList. DataList находится в UpdatePanel, так что элемент плавно исчезает через половину секунды или, может быть, немного больше, но мне бы очень хотелось, чтобы строка выскользнула (вверх), как только они нажали кнопку удаления, и затем удалите элемент в сообщении.


Я могу сделать строку слайдом с jQuery, но postback мешает. Как ты с этим справляешься?

спросил(а) 2021-01-25T16:58:11+03:00 4 месяца, 3 недели назад
1
Решение
77

Вы можете использовать методы страницы в asp.net для отправки запроса на сервер без обратной передачи. Они очень просты в использовании, и вы можете делать любой эффект, который вам нравится, когда вызов ajax завершен (вы получаете функцию, называемую успехом).


Если вы хотите придерживаться сообщения назад, одно из следующих решений:


<asp:Button id="myButton" OnClientClick="return fadeThenAllowSubmit()" ... />

и в js что-то вроде:


var allowSubmit = false;
function fadeThenAllowSubmit() {
if (allowSubmit) return true
// do the jquery stuff that will be completed in, let say, 1000ms
setTimeout(function() {
allowSubmit = true
$("input[id$=myButton]").click()
allowSubmit = false
}, 1000)
return false
}

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

ответил(а) 2021-01-25T16:58:11+03:00 4 месяца, 3 недели назад
45

Вы пробовали посмотреть какие-либо элементы инструментария управления Ajax? Я считаю, что есть некоторые элементы управления, которые будут работать с кодом на стороне клиента (java), если ваш не очень знакомый

ответил(а) 2021-01-25T16:58:11+03:00 4 месяца, 3 недели назад
45

Я бы использовал Javascript на стороне клиента, чтобы вручную масштабировать свойство CSS непрозрачности до нуля, а затем пометить элемент как "display: none", после чего отправить post-back.


Я считаю, что в Internet Explorer вам нужно использовать свойство CSS "Filter", поскольку оно не поддерживает непрозрачность.


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

ответил(а) 2021-01-25T16:58:11+03:00 4 месяца, 3 недели назад
45

Зарегистрировать обработчик для события формы "отправить".


$("form").submit(function() {

// if user initiated delete action
// do your thing with deleted row (effects, etc.)

// after you're done with it, submit the form from script
// (you can queue the submission after the effect)
// the submission from the script won't trigger this event handler

return false; // prevent submission
}

Предотвращение подачи формы необходимо, чтобы избежать вмешательства в эффекты, которые вы хотите выполнить. После того, как они будут завершены, вы можете продолжить подачу.

ответил(а) 2021-01-25T16:58:11+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема