2013-05-29 43 views
1

我有一个单选按钮列表,标签和下拉菜单如下:SelectedIndexChanged事件没有触发1个列表项

<asp:RadioButtonList id="rbList" runat="server" AutoPostBack="true" EnableViewState="false" 
      OnSelectedIndexChanged="rbList_SelectedIndexChanged" 
RepeatLayout="Table" RepeatDirection="Horizontal" RepeatColumns="3"> 
<asp:ListItem Selected="True"> Radio 1 </asp:ListItem> 
      <asp:ListItem> Radio 2 </asp:ListItem> 
      <asp:ListItem> Radio 3 </asp:ListItem> 
      </asp:RadioButtonList> 

<asp:Label runat="server" ID="lbl" text="1,2" EnableViewState="false"></asp:Label> 

<asp:DropDownList runat="server" ID="ddl" Visible="false">      
      </asp:DropDownList> 

我rbList_SelectedIndexChanged如下:

protected void rbList_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (rbList.SelectedIndex == 0 | rbList.SelectedIndex==1) 
    { 
     lbl.Text = "1,2"; 
     ddl.Visible = false; 
     //ddl.Attributes.Add("style", "display:none"); 
    } 
    else if (rbList.SelectedIndex == 2) 
    { 
     lbl.Text = "3"; 
     ddl.Visible = true; 
     //ddl.Attributes.Add("style", ""); 
    } 
} 

现在,当我从改变radio3到radio2,事件像往常一样被解雇,一切看起来不错。但是当我从radio3变成radio1时,我没有看到事件被触发(我插入了一个断点)ddl保持可见,但lbl的值变为1,2。

我的2个问题如下:

1)为什么事件没有得到关于改变从radio3到收音机1解雇?

2)当事件没有被触发时,标签值如何变化?

任何帮助或意见都非常感谢..预先感谢!

回答

1

预先选中标记中的单选按钮会导致您的问题。从任何其他选项返回到选项1不会触发已更改的事件。

这条线是你的罪魁祸首。

<asp:ListItem Selected="True"> Radio 1 </asp:ListItem> 

,如果你删除选定的属性的情况下应该适当登记

<asp:ListItem> Radio 1 </asp:ListItem> 

你可以处理在代码中预选的后面。

protected void Page_Load(object sender, EventArgs e) 
    { 
     if(!IsPostBack) 
     { 
      rbList.SelectedIndex = 0; 
     } 
    } 
+0

这部分解决了我的问题!如果我在if(!IsPostBack)里添加rbList.SelectedIndex = 0,那么它不允许改变任何其他的单选按钮,它总是radio1 ..我没有在我的页面内的UpdatePanel .. – user841311

+0

你不应该需要一个UpdatePanel for这,SelectedIndexChanged事件是一个回传,所以'if'块应该计算为false,而不是将选定的索引重新赋值为0。 –

1

我不知道这是一个错误或没有,但...

当的EnableViewState =“假” DDL或RBL和用户试图挑选第一个列表项(索引0) SelectedIndexChanged不会被解雇。

如果设置的EnableViewState =“true”,则该DDL或RBL应能正常工作,当用户选择第一个列表项,而选择非第一项...

+0

谢谢。这对我有效。 –

1

据我所知,编程设置SelectedIndex(即使在第一篇文章中)也会产生与标记中设置Selected =“True”相同的行为。

唯一可靠的方法似乎是使用带有RadioButtonList的UpdatePanel作为异步触发器,确保标记随每次更改而变化。

,除非你想要去的jQuery的路线,也就是说..

0

我也有类似的问题,但它与更新面板被设置为false“ChildrenAsTriggers”物业办。所有其他单选按钮索引以这种方式工作正常,除了索引0.

相关问题