我有一个拥有更新面板的asp.net网络应用程序。 在更新面板内部,我有一个网格视图控件。 在网格视图控件中,我有两个按钮注意可见性:
<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 =“return false;”。当我单击id为ibTempDelete的按钮时,它会调用一些jquery从我的gridview中删除一行,然后它会触发ibDelete2
按钮(隐藏的那个)的click事件。 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,淡出行,提醒你,回发帖子并删除行...它基本上有效!那很好,我的问题是什么?
我的问题是在这篇文章之后立即回来(现在我的gridview中有2行)如果我尝试点击ibTempDelete
按钮没有任何反应,它似乎不再可点击了?警报甚至不显示。
所以我的问题是我对asp.net和postbacks的运作方式缺乏了解。一旦我点击第一个回发,为什么按钮不再可点击?
答案 0 :(得分:2)
当您致电__doPostBack
时,页面无论如何都要刷新,为什么要拨打$(this).remove()
。也许你可以在致电__doPostBack
之前给它打电话。即使在回发后页面刚刚加载,事件处理程序也应该按原样运行。尝试使用直播。
$(".TempDeleteLineItem").live('click', function() {
$(this).closest("tr").fadeOut(3000, function() {
$(this).hide().find('.DeleteLineItem').click();
});
});
答案 1 :(得分:0)
$(".TempDeleteLineItem").live('click', function() {
var $this = $(this);
$(this).closest("tr").fadeOut(1000, function() {
$(this).hide();
$this.prev('.DeleteLineItem').click();
});
return false;
});