2011-08-11 2 views
0

У меня есть веб-приложение asp.net с панелью обновления. Внутри панели обновления у меня есть элемент управления сеткой. В элементе управления сетки У меня есть две кнопки заметить видимость:Кнопка изображения не запускает jQuery/postback после первого обратного вызова?

<ItemTemplate> 
    <asp:ImageButton class="DeleteLineItem" style="display:none;" ID="ibDelete2" runat="server" CommandName="DeleteRow" ImageUrl="images/d.gif" ToolTip="Delete Line Item?" /> 
    <asp:ImageButton class="TempDeleteLineItem" ID="ibTempDelete" OnClientClick="return false;" runat="server" ToolTip="Delete Line Item?" ImageUrl="images/d.gif" /> 
</ItemTemplate> 

Обратите внимание на первый дисплей из них установлен в none причину я это вы заметите, что вторая одна имеет OnClientClick = "возвращение ложным; ». Когда я нажимаю кнопку с идентификатором ibTempDelete, он вызывает некоторый jquery, чтобы удалить строку из моего gridview, а затем запускает событие click кнопки ibDelete2 (тот, который скрыт). JQuery для этого здесь:

$(".TempDeleteLineItem").click(function() { 
    $(this).closest("tr").fadeOut(3000, function() { 
     alert('hi'); 
     __doPostBack($(this).closest ('tr').find ('.DeleteLineItem').attr('name'), ""); 
     $(this).remove(); 
    }); 
}); 

Я нахожу строку и исчезать его, сделать запись назад, вызвав событие DeleteLineItem и удаление строки. Теперь, когда я впервые загружаю свою веб-страницу (предположим, что в виде сетки есть 3 записи). Когда моя страница загружается, я могу легко щелкнуть по кнопке ibTempDelete, и она вызывает jquery, затухает строка, предупреждает привет, возвращает сообщение и удаляет строку ... она работает в принципе! Отлично, в чем моя проблема?

Моя проблема сразу после этого сообщения назад (теперь у меня есть 2 строки в моем gridview), если я пытаюсь нажать кнопку ibTempDelete, ничего не происходит, кажется, что он больше не доступен для кликов? Предупреждение даже не отображается.

Так что мой вопрос заключается в том, что я не понимаю, как работают asp.net и postbacks. Как только я ударил первый ответ, почему кнопка больше не доступна?

ответ

0

Шанкар помогли мне в чате, мы в конечном итоге делает это:

$(".TempDeleteLineItem").live('click', function() { 
    var $this = $(this); 
    $(this).closest("tr").fadeOut(1000, function() { 
     $(this).hide(); 
     $this.prev('.DeleteLineItem').click(); 
    }); 
    return false; 
}); 
2

Когда вы звоните __doPostBack, страница в любом случае будет обновлена, почему вы звоните $(this).remove(). Может быть, вы можете позвонить ему до звонка __doPostBack. Когда страница загружается только после обратной передачи, обработчики событий должны работать так, как есть. Попробуйте это, используя live.

$(".TempDeleteLineItem").live('click', function() { 
    $(this).closest("tr").fadeOut(3000, function() { 
     $(this).hide().find('.DeleteLineItem').click(); 
    }); 
}); 
+0

Шанкар - ты прав abotu удалить его ненужным, это опять наполовину работает правильно. Проблема в том, что я не могу понять странную проблему, которую я испытываю при создании новых строк/удалении всех строк из gridview. Система становится невосприимчивой из-за этого jquery/обратной передачи через клиента. Возможно ли, что мы можем поговорить в чате, чтобы обсудить эту проблему с вами? – oJM86o

+0

Да, мы можем пообщаться – ShankarSangoli

+0

вот номер http://chat.stackoverflow.com/rooms/2376/jquery-help-for-ojm86o – oJM86o

Смежные вопросы