Как я могу исчезнуть перед передачей - PullRequest
0 голосов
/ 08 октября 2008

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

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

Ответы [ 4 ]

2 голосов
/ 11 октября 2008

Вы можете использовать методы страницы в 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's say, 1000ms
    setTimeout(function() {
        allowSubmit = true
        $("input[id$=myButton]").click()
        allowSubmit = false
    }, 1000)
    return false
}

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

0 голосов
/ 08 октября 2008

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

Я считаю, что в Internet Explorer для этого нужно использовать свойство CSS «Фильтр», так как оно не поддерживает прозрачность.

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

0 голосов
/ 08 октября 2008

Зарегистрируйте обработчик для события "submit" формы.

$("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
}

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

0 голосов
/ 08 октября 2008

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

...