我有一个包含2个项目的RadioButtonList。我想在选择任何项目时回发。我为RadioButtonList的一个项添加了一个确认框。但是,当我在confirmmbox中单击OK时,没有回发和SelectedIndexChanged事件没有被触发。
RadioButtonList的AutoPostback属性设置为true。 这是我的Page_Load方法的代码片段:
RadioButtonOpenRestricted.Attributes.Add("AutoPostBack", "True");
RadioButtonOpenRestricted.Items.FindByValue("Open Access").Attributes.Add("AutoPostBack", "True");
RadioButtonOpenRestricted.Items.FindByValue("Open Access").Attributes.Add("OnClick", "javascript:return confirm('Are you sure?');");
之前,我已经为整个RadioButtonList添加了确认框,并且回发按预期工作。但我希望仅当用户点击“打开访问”项目时才会显示确认框。
请帮忙!
我尝试了一些事情。新的代码行如下所示:
RadioButtonOpenRestricted.Items.FindByValue(“Open Access”)。Attributes.Add(“OnClick”,“javascript:showConfirmBox(0,'”+ RadioButtonOpenRestricted.ClientID +“')”); RadioButtonOpenRestricted.Items.FindByValue(“Restricted Access”)。Attributes.Add(“OnClick”,“javascript:showConfirmBox(1,'”+ RadioButtonOpenRestricted.ClientID +“')”);
javascript方法是:
function showConfirmBox(i,id) { 如果(I == 0) { 如果(确认(“您确定要提供开放式访问吗?将删除所有现有的个人权限!”)== true) { var ctrl1 = document.getElementById(id +“_ 0”); ctrl1.selected = TRUE; } 其他 { var ctrl2 = document.getElementById(id +“_ 1”); ctrl2.selected = TRUE; } } 如果(I == 1) { var ctrl2 = document.getElementById(id +“_ 1”); ctrl2.selected = TRUE; } }此代码的问题在于它同时将OK和Cancel都视为同一个。确认框正在显示但是如果没有调用javascript方法的其他部分。我也试过使用OnClientClick ......这甚至不显示Confirmbox。
帮助!!!
答案 0 :(得分:1)
这是因为您的on click脚本不能很好地与ASP.NET生成的自动回发脚本一起使用。快速解决方案可以
RadioButtonOpenRestricted.AutoPostBack = true;
RadioButtonOpenRestricted.Items.FindByValue("Open Access").Attributes.Add("OnClick", "if (!confirm('Are you sure?')) return false;");
虽然在取消确认框时仍会出现问题(在这种情况下,您必须添加脚本以再次选择上一个单选按钮)。
因此我不喜欢单选按钮列表 - 您可以考虑使用替换机制,例如带有项目模板中单选按钮的转发器,并使用您自己的java脚本进行确认。
答案 1 :(得分:0)
我认为您希望使用OnClientClick
来显示“确认”窗口。
我认为你不能让javascript确认窗口执行回发,至少不是你的代码设置方式。
您应该将OnClientClick设置为显示带有<asp:Button/>
的确认模式或窗口,并让该按钮执行您要查找的回发。
答案 2 :(得分:0)
Khushboo,它曾经和我一起多次发生过。这背后的原因是我在aspx页面的某个地方遗漏了一些结束标记。我曾经将我的整个aspx页面复制到其他文本编辑器中,并将所有元素逐个粘贴到我的aspx页面。它总能解决我的这个问题。我相信你一定要错过一些结束标签,请交叉检查所有元素。