2015-10-06 2 views
0

Я пытаюсь отобразить группу переключателей, если флажок над ней установлен и спрятать их, когда флажок не установлен. У меня была предыдущая версия этого, в том же приложении, и она работает просто отлично [radio button открывает флажки вместо] в рабочем. Когда выбрано MinorCheck, переключатели не становятся видимыми. Ошибок нет, ничего не происходит. Почему это?Группа радио не отключается при выборе флажка

Я просмотрел другие комментарии, как Visible = "false" останавливает его и так далее. однако ясно, что visible = "false" в начале не является проблемой для моего первого блока кодирования.

одна ссылки, которую я использовал: ASP.NET CheckBox does not fire CheckedChanged event when unchecking

Работая один:

HTML

<td class="LeftAlign" width="24%">     

<font class="Blackfont" size="1"> 
<B>          Union Affiliated? 
</B> 
</font> 
<font class="WeOrangefont" size="1"> 
&#8226; 
</font> 
</td> 
    <td width="10%"> 
     <asp:RadioButtonList ID="rblclass" runat="server" AutoPostBack="True" class="Bluefont" size="1" font-Bold="True" font-Size="8pt" > 

       <asp:ListItem Value="Y">Yes</asp:ListItem> 
       <asp:ListItem Value="N">No</asp:ListItem> 
     </asp:RadioButtonList> 
    </td> 

    <td></td> 
    </tr> 
</table> 

VB.NET

Protected Sub rblclass_SelectedIndexChanged(sender As Object, e As EventArgs) Handles rblclass.SelectedIndexChanged 
    If (rblclass.SelectedValue = "Y") Then 
     Register.Focus() 
     union1.Visible = True 
     union2.Visible = True 
     union3.Visible = True 
     LocalLbl.Visible = True 
     Reqimage.Visible = True 
    Else 
     Register.Focus() 
     union1.Visible = False 
     union2.Visible = False 
     union3.Visible = False 
     LocalLbl.Visible = False 
     Reqimage.Visible = False 
    End If 

End Sub 

Другая часть кодирования, который не работает, даже если он очень похож:

<tr> 
<td class="LeftAlign" colspan="2"> 
    <font class="Blackfont" size="1"> 
       <asp:CheckBox ID="MinorCheck" runat="server" NAME="BUSINESSCLASSIFICATION" 
       class="ownerClass" value="000" checked = "false" TabIndex="32"/> 

       <asp:HyperLink ID="HyperLink2" runat="server" TABSTOP = "-1" onClick="OpenWindow('Images/Supp.html', 'Min Business Concern',600, 300, 'no')" font-Underline="True" ForeColor="#666666" >Minority Business Concern</asp:HyperLink> 
    </font> 
</td> 

</tr> 
<tr>  
    <td> 
    <asp:RadioButtonList ID="RadioButtonBClass" runat="server" AutoPostBack="True" 
          class="Bluefont" size="1" font-Bold="True" font-Size="8pt" visible = "false"> 

     <asp:ListItem Value="Y" >African-American male</asp:ListItem> 
     <asp:ListItem Value="N">African-American female</asp:ListItem> 
     <asp:ListItem Value="N">Asian-Indian American male</asp:ListItem> 
     <asp:ListItem Value="N">Asian-Indian American female</asp:ListItem> 
     <asp:ListItem Value="N">Asian-Pacific American male</asp:ListItem> 
     <asp:ListItem Value="N">Asian-Pacific American female</asp:ListItem> 
     <asp:ListItem Value="N">Native American male</asp:ListItem> 
     <asp:ListItem Value="N">Native American female</asp:ListItem> 

    </asp:RadioButtonList> 
    </td> 
</tr> 

VB.NET

Protected Sub MinorCheck_CheckedChanged(sender As Object, e As EventArgs) Handles MinorCheck.CheckedChanged 
    If (MinorCheck.Checked = true) Then 
     RadioButtonBClass.Visible = True 
     NonMinorCheck.Checked = false 
    Else 
     RadioButtonBClass.Visible = False 
    End If 
End Sub 
+0

Когда я опубликовал, у меня было "" над истинным/ложным для 'MinorCheck', хотя моя кодировка его не имела. В любом случае вышеуказанное кодирование не работает на данный момент – narue1992

ответ

1

Ваш флажок отсутствует AutotPostBack=True. Без него событие CheckedChanged не будет срабатывать, пока какой-либо другой элемент управления не выполнит команду PostBack.

+0

Я действительно ошибаюсь. Я официально понимаю, что означает AutoPostBack o.o. Я всегда видел это и предполагал, что это необходимо, но теперь я знаю, что происходит, когда у вас его нет. Благодаря! это исправило мою проблему !! – narue1992

+0

если вы не возражаете, я задаю вам быстрый вопрос ... первые 2 переключателя при выборе работы; однако, если другие будут выбраны, они переключаются на второй переключатель после того, как страница «обновится» до верхней части страницы после проверки переключателя @InbetweenWeekends – narue1992

+0

nevermind .. удалил значение = "n" и значение = " y ", чтобы остановить это – narue1992

1

Это сбивает с толку, но когда вы используете свойство Visible в элементах управления ASP , на самом деле не создавайте объект вообще, поэтому, если вы попытаетесь перейти на Visible true, это не сработает, то, что я лично использую, - это трюк с CSS-классом, я собираюсь скопировать код, который я сделал для вашего дела :

<style> 
    .CSSHiden { 
     display: none; 
    } 
</style> 

Примечание: Я поставил AutoPostBack = истина на Checkbox Малую Проверить

<asp:CheckBox ID="MinorCheck" runat="server" NAME="BUSINESSCLASSIFICATION" 
      class="ownerClass" value="000" TabIndex="32" OnCheckedChanged="MinorCheck_CheckedChanged" AutoPostBack="True"/> 
<asp:HyperLink ID="HyperLink2" runat="server" TABSTOP = "-1" onClick="OpenWindow('Images/Supp.html', 'Min Business Concern',600, 300, 'no')" font-Underline="True" ForeColor="#666666" >Minority Business Concern</asp:HyperLink> 

    <asp:RadioButtonList ID="RadioButtonBClass" runat="server" AutoPostBack="True" class="Bluefont" size="1" font-Bold="True" font-Size="8pt" CssClass="CSSHiden"> 
     <asp:ListItem Value="Y" >African-American male</asp:ListItem> 
     <asp:ListItem Value="N">African-American female</asp:ListItem> 
     <asp:ListItem Value="N">Asian-Indian American male</asp:ListItem> 
     <asp:ListItem Value="N">Asian-Indian American female</asp:ListItem> 
     <asp:ListItem Value="N">Asian-Pacific American male</asp:ListItem> 
     <asp:ListItem Value="N">Asian-Pacific American female</asp:ListItem> 
     <asp:ListItem Value="N">Native American male</asp:ListItem> 
     <asp:ListItem Value="N">Native American female</asp:ListItem> 

    </asp:RadioButtonList> 

И код, который я использовал C#, но очень просто изменить в VB.net

protected void MinorCheck_CheckedChanged(object sender, EventArgs e) 
    { 
     if (MinorCheck.Checked == true) 
      RadioButtonBClass.CssClass = ""; 
     else 
      RadioButtonBClass.CssClass = "CSSHiden"; 
    } 
+0

@InbetweenWeekends исправил мою проблему. Я всегда использовал visible = "false", но не понимал, что это будет означать, что объект не был создан. Я буду более уверенно смотреть в эту концепцию. Я также посмотрю на тестирование вашего примера. Я ценю пример, который вы мне дали. Никогда не думал о том, чтобы вытащить класс в выражении if else :) – narue1992

Смежные вопросы