在OnClientClick javascript代码之前触发Ajax ConfimButtonExtender

时间:2009-07-31 21:58:50

标签: asp.net javascript visual-studio ajax visual-studio-2008

我使用aspnet 3.5,vs 2008,ajax 2.0,普通的旧javascript(不使用任何javascript框架)。

在asp:listview中,我有一个按钮(删除),其中包含OnClientClick =“turnrowpink(this);”

此按钮还有一个ajax 2.0 confirmmbuttonextender(你确定要删除这条记录吗?)

在你确定之前用于运行的turnrowpink功能?信息。

过去,你确定吗?会弹出,你点击删除的行以粉红色显示,以显示你要删除的行。

此后我添加了许多完全不相关的javascript函数,现在上面的代码以相反的顺序触发:

你确定吗?确认发生在第1,然后在确定,调用turnrowpink。在那一点上运行turnrowpink有点傻。为了增加对伤害的侮辱,我在turnrowpink上得到了一个javascript错误,因为parm (this)似乎已经被设置为其他东西了。

那么,我怎么强迫turnrowpink先开火?

我意识到这些东西是异步完成的,但它曾经起作用。

以下是代码:

这是在listview项目模板中:

<td>
   <asp:ImageButton ID="ImageButtonDel" 
   runat="server" OnClientClick="TurnRowPink(this);"
   ImageUrl="~/delete.GIF" CommandName="DeleteRecord" 
   CommandArgument='<%# Eval("tt_Pkey") %>' />
</td>

这是ConfirmButtonExtender,也在listview项目模板中:

<cc1:ConfirmButtonExtender ID="ConfirmButtonExtender1" 
 ConfirmText="Are you sure you want to delete this record?"  
   runat="server" TargetControlID="ImageButtonDel">
</cc1:ConfirmButtonExtender>

2 个答案:

答案 0 :(得分:1)

如果我是你,我不会使用ConfirmButtonExtender。它正在使用它的方式就是弹出一个确认消息框,这个框更容易手动完成。

将OnClientClick属性更改为:

OnClientClick="return TurnRowPink(this);"

然后你的TurnRowPink函数看起来像这样:

function TurnRowPink(obj){
  /*
  * Turn row pink logic here
  */

  if(Confirm("Are you sure you want to delete this record?")){
    // Any logic you may need for if they click "OK"
    return true;
  }
  else{
    // Any logic you may need if they click "Cancel", such as change back from pink to prior color
    return false;
  }
}

这是未经测试的代码,但我相信它会起作用,虽然我对ImageButtons没有太多经验

答案 1 :(得分:1)

我有这个问题,问题是扩展器覆盖你的onclick功能而不是链接它(jQuery我们爱你)。我这样砍了它:

<asp:ImageButton ID="ImageButtonDel" 
   runat="server" onmousedown="TurnRowPink(this);"
   ImageUrl="~/delete.GIF" CommandName="DeleteRecord" 
   CommandArgument='<%# Eval("tt_Pkey") %>' />