2017-01-31 26 views
0

Мне нужно, чтобы определенные элементы управления были видимыми или невидимыми по выбору пользователя с помощью переключателя, но мне нужно сделать эти элементы видимыми или невидимыми , как только пользователь нажимает один из переключателей.Увольнение события, когда пользователь нажимает на переключатель

Я попытался добавить OnSelectedIndexChanged на стороне ASP, но он ничего не делает. Есть ли другой способ вызвать код, как только вы нажмете одну из переключателей?

На данный момент у меня есть:

<asp:RadioButtonList ID="rblMeasurementSystem" runat="server" OnSelectedIndexChanged="rblMeasurementSystem_SelectedIndexChanged"> 
    <asp:ListItem Text="Leads" Value="1" /> 
    <asp:ListItem Text="Audit Thresholds" Value="2" /> 
    <asp:ListItem Text="Root Cause" Value="3" /> 
    <asp:ListItem Text="Pend Reasons" Value="4" /> 
    <asp:ListItem Text="AA Review" Value="5" /> 
</asp:RadioButtonList> 

А в коде-за меня:

protected void rblMeasurementSystem_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string value = rblMeasurementSystem.SelectedItem.Value.ToString(); 
    if (value == "1") 
    { 
     lblLabel1.Visible = true; 
     txtText1.Visible = true; 
     lblLabel2.Visible = false; 
     txtText2.Visible = false; 
     lblLabel3.Visible = false; 
     txtText3.Visible = false; 
     lblLabel4.Visible = false; 
     txtText4.Visible = false; 
     lblLabel5.Visible = false; 
     txtText5.Visible = false; 
    } 

    if (value == "2") 
    { 
     lblLabel1.Visible = false; 
     txtText1.Visible = false; 
     lblLabel2.Visible = true; 
     txtText2.Visible = true; 
     lblLabel3.Visible = false; 
     txtText3.Visible = false; 
     lblLabel4.Visible = false; 
     txtText4.Visible = false; 
     lblLabel5.Visible = false; 
     txtText5.Visible = false; 
    } 

    if (value == "3") 
    { 
     lblLabel1.Visible = false; 
     txtText1.Visible = false; 
     lblLabel2.Visible = false; 
     txtText2.Visible = false; 
     lblLabel3.Visible = true; 
     txtText3.Visible = true; 
     lblLabel4.Visible = false; 
     txtText4.Visible = false; 
     lblLabel5.Visible = false; 
     txtText5.Visible = false; 
    } 

    etc... 

} 
+1

Вы можете группировать элементы управления на панели/сетке, чтобы вы могли скрыть их с помощью одного изменения .Visible. –

+0

Проблема заключается в событиях asp: radio button, как правило, типа «runat =» server: «, т. Е. Серверные элементы управления. То, что вы ищете, - это какое-то взаимодействие на стороне клиента с DOM и контролем asp. Для обработки этой «клиентской стороны» вам необходимо добавить функциональность/украшение JavaScript. –

+0

@JeroenvanLangen - Хорошее предложение! Это значительно сократило мой код. –

ответ

3

Проблема с кодом является то, что код никогда не разместить обратно на сервер (Элементы управления, такие как ASP RadioButton, CheckBox, выставляют кешированные события, означающие, что они будут запускаться только тогда, когда фактическая обратная передача происходит, например, кнопкой). Просто установите AutoPostBack свойство верно, чтобы заставить постбэк: -

<asp:RadioButtonList ID="rblMeasurementSystem" runat="server" AutoPostBack="true" 
    OnSelectedIndexChanged="rblMeasurementSystem_SelectedIndexChanged"> 

Кроме того, если вы просто показ \ скрывается несколько элементов управления на основе выбора кнопки радио вы должны сделать это на стороне клиента с помощью Javascript или jQuery.