我在点击转发器中的链接按钮并且已经通过某些条件时,尝试显示一个javascript确认框。
My Repeater位于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 :(得分:1)
尝试此操作(第四个参数设置为true
):
Page.ClientScript.RegisterStartupScript(this.GetType(), "ConfirmDelete", "return confirm('Are You Sure Want To Delete?');", true);
答案 1 :(得分:1)
试试这个:
page.RegisterStartupScript(this, this.GetType(), "confirmDelete", "return confirm('confirm?\.');", true);
答案 2 :(得分:1)
试试这个
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);
答案 3 :(得分:1)
使用this示例
string sJs = "function ConfirmDelete() { return confirm("Are you sure?"); }
Page.ClientScript.RegisterClientScriptBlock(GetType(), "jscode", sJs, true);
答案 4 :(得分: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
属性,以便在转发器的项目命令中,您可以知道要删除哪一个。
答案 5 :(得分: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 accordian面板中,这也会有效。
这样,脚本将被绑定到项目模板中的每个linkbutton项目。此代码查找Item或AlternatingItem行,使用FindControl方法查找btnDelete控件,然后将onclick属性添加到Attributes集合。结果是,当用户单击“删除LinkButton”时,将弹出“确定/取消”对话框以确认删除。
您可以使用以下参考链接
找到相同的更多信息