在Radiobuttonlist的确认框中单击“确定”后,页面不会回发

时间:2011-06-29 02:56:44

标签: c# asp.net

我有一个包含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。

帮助!!!

3 个答案:

答案 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页面。它总能解决我的这个问题。我相信你一定要错过一些结束标签,请交叉检查所有元素。