2013-03-07 49 views
1

我试图显示一个JavaScript确认框,只要我的中继器中的链接按钮被点击并且已经通过了一些条件。Javascript ConfirmBox在更新面板中调用时不显示

我的中继器位于Ajax手风琴内容模板内的更新面板中。

<Accordion><UpdatePanel><Repeater>this is where the link button is</Repeater></UpdatePanel></Accordion> 

这里是我的代码,我把它放在一个Repeater_ItemCommand方法中:

Page.ClientScript.RegisterStartupScript(this.GetType(), "ConfirmDelete", "return confirm('Are You Sure Want To Delete?');"); 

我看着成几个代码解决方案,但仍不能正常工作。 我做错了什么?

更新:

如果我从html调用javascript。它工作得很好。 代码:

<asp:LinkButton ID="lbDelete" runat="server" OnClientClick="return confirm('Are you sure want to delete?');">Delete</asp:LinkButton> 

但我仍然无法从代码中调用它背后

+0

哪里是该行代码的详细信息?在回发方法? – 2013-03-07 04:47:33

+0

@Jeremy Thompson - 中继器项目命令方法 – ricojohari 2013-03-07 04:49:11

+1

奇怪我不认为确认会以这种方式工作! – 2013-03-07 05:08:26

回答

1

您可以使用Repeater_ItemDataBound事件来实现它。当控件绑定时,你只需要用button/linkbutton注册javascript。下面的代码块会给你一个大概的想法

protected void rpt_ItemDataBound(object source, RepeaterCommandEventArgs e) 
    { 
     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType== ListItemType.AlternatingItem) 
     { 
      LinkButton btn = (LinkButton)e.Item.FindControl("btnDelete"); 
      btn.Attributes.Add("onclick", "if (! confirm('Delete this record?')) return false; "); 

     } 
    } 

即使你的控件是在ajax手风琴板上,这也可以工作。

这样脚本将绑定到项目模板中的每个linkbutton项目。此代码查找Item或AlternatingItem行,使用FindControl方法查找btnDelete控件,然后将onclick属性添加到Attributes集合。结果是当用户点击Delete LinkBut​​ton时,会弹出一个OK/Cancel对话框来确认删除。

您可以找到相同的使用以下参考链接

Reference

+0

终于这对我有用。谢谢 – ricojohari 2013-03-08 04:22:40

+0

@ricojohari我的荣幸 – Devjosh 2013-03-08 05:25:19

1

试试这个(设置为true第四个参数):

Page.ClientScript.RegisterStartupScript(this.GetType(), "ConfirmDelete", "return confirm('Are You Sure Want To Delete?');", true); 
+0

仍然无法正常工作。是因为我的转发器在ajax手风琴控制器内? – ricojohari 2013-03-07 04:47:59

+0

你在哪里调用这个'RegisterStartupScript'?编辑N/M,刚刚在上面看到您的评论... – 2013-03-07 04:49:52

1

试试这个:

page.RegisterStartupScript(this, this.GetType(), "confirmDelete", "return confirm('confirm?\.');", true); 

请检查:http://forums.asp.net/t/1363887.aspx

+0

仍然无法正常工作。虽然 – ricojohari 2013-03-07 04:57:34

+0

感谢我hav更新code.plz尝试。 – Amrendra 2013-03-07 05:04:46

+0

你是否尝试我的代码? – 2013-03-07 05:21:47

2

试试这个

ScriptManager.RegisterStartupScript(this, typeof(string), "ConfirmDelete", 
    "return confirm('Are You Sure Want To Delete?');", true); 

编辑

样品为 客户端添加此

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
    <script type="text/javascript"> 
     function ShowConfirmation() { 
      if (confirm("Are You Sure Want To Delete?") == true) { 
       //Calling the server side code after confirmation from the user 
       alert("Deleted"); 
      } 
     } 
    </script> 

服务器端的C#代码

Page.ClientScript.RegisterStartupScript(this.GetType(), "showAl", "ShowConfirmation();", true); 
+0

很抱歉,我迟到了午餐。但仍然,解决方案没有工作:( – ricojohari 2013-03-07 06:19:20

+0

只使用我的编辑代码。它工作给我。 – 2013-03-07 06:23:55

+0

是的,我只使用您的编辑代码。我已经尝试了一遍,仍然没有工作 – ricojohari 2013-03-07 06:32:50

1

使用this样品

string sJs = "function ConfirmDelete() { return confirm("Are you sure?"); } 
     Page.ClientScript.RegisterClientScriptBlock(GetType(), "jscode", sJs, true); 
1

你应该把JS中继器上这种方式。

<asp:Repeater runat="server" ID="rep"> 
    <ItemTemplate> 
     <asp:Button runat="server" ID="btnDelete" CommandName="ConfirmDelete" OnClientClick="return confirm('Are You Sure Want To Delete?');" /> 
    </ItemTemplate> 
</asp:Repeater> 

此外,数据绑定过程中,你需要设置ID到该按钮的CommandArgument属性,以便在你的中继的项目命令,你就可以知道要删除哪一个。

+0

是的,我可以做到这一点很好,但问题是我想从后面的代码调用JavaScript。有没有什么办法来实现呢? – ricojohari 2013-03-07 06:18:46

+0

让我试着去理解.. 1.用户点击删除按钮并返回页面帖子2.后面的代码发送确认按钮到客户端3.用户点击确认按钮后页面再次发回4.后面的代码删除记录是这样吗 – 2013-03-07 06:27:51

+0

是的但在确认按钮显示给用户之前,我想验证用户是否有权删除该记录,如果用户没有权限,那么确认框不会显示出来 – ricojohari 2013-03-07 07:09:56