如何在回发之前淡出一行

时间:2008-10-08 14:50:10

标签: asp.net ajax .net-2.0

我有一个在ASP.Net的DataList中创建的表。该表有三个文本字段,一个带有编辑按钮的字段和一个带删除按钮的字段。当用户单击删除按钮时,它会回发,删除项目,然后再次绑定DataList。 DataList位于UpdatePanel中,因此该项目在半秒或更长时间后会平滑消失,但我真正喜欢的是,一旦它们点击删除按钮,该行就会滑出(向上),并且然后让它删除帖子上的项目。

我可以使用jQuery将行滑出,但回发会妨碍。你怎么处理那件事呢?

4 个答案:

答案 0 :(得分:2)

您可以在asp.net中使用page methods向服务器发送请求而不进行回发。它们非常简单易用,你可以在完成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
}

这有点像黑客,想法是最初取消回发,做一些事情然后设置一个计时器,其中将启用回发。这种方法的一个大问题是淡入淡出效果和实际删除是独立的(如果出现错误,你仍然会得到淡入淡出效果)。

答案 1 :(得分:0)

您是否尝试过查看任何Ajax控件工具包项?我相信如果您不是非常熟悉的话,那里会有一些控制器会使用客户端(java)代码。

答案 2 :(得分:0)

我会使用客户端Javascript手动将“不透明度”CSS属性缩小到零,然后将元素标记为“display:none”,然后提交回发。

我相信在Internet Explorer中,您需要使用“Filter”CSS属性来执行此操作,因为它不支持不透明度。

您可以编写一个例程来设置这两个属性,这应该涵盖所有主要的浏览器。

答案 3 :(得分:0)

注册表单“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
}

防止表单提交是必要的,以避免干扰您想要执行的效果。完成后,您可以继续提交。