2015-10-06 63 views
0

我試圖取消隱藏一組單選按鈕,如果其上方的複選框被選中並且未勾選複選框時將其隱藏。我有一個以前的版本,在同一個應用程序,它工作得很好[單選按鈕打開復選框,而不是]在工作之一。當選擇MinorCheck時,單選按鈕不可見。沒有錯誤顯示,沒有任何反應。爲什麼是這樣?當選擇複選框時,無線電組不會取消隱藏

我看過其他評論如何可見=「假」停止它等等。然而,很顯然,在開始時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」的True/False超過了,即使我的編碼沒有。無論如何,上述編碼目前不起作用 – narue1992

回答

1

你的複選框缺少AutotPostBack=True。沒有它,CheckedChanged事件將不會觸發,直到其他控件執行PostBack

+0

確實是一個小錯誤。我現在正式瞭解AutoPostBack意味着什麼o.o。我只是總是看到它,並認爲它是必需的,但現在我知道當你沒有它時會發生什麼。謝謝!這解決了我的問題! – narue1992

+0

如果你不介意我問你一個簡單的問題......選擇工作時的前2個單選按鈕;然而,如果其他人碰巧被選中,他們會在頁面「刷新」到頁面頂部之後切換到第二個單選按鈕,在單選按鈕被選中之後@InbetweenWeekends – narue1992

+0

nevermind ..刪除了value =「n」和value =「 y「來阻止它 – narue1992

1

這是混亂的,但是當你使用Visible屬性在ASP控制,實際上根本不創建對象,所以如果您嘗試更改爲Visible,則true將不起作用,我個人使用的是帶有CSS類的技巧,我將複製我爲您的案例創建的代碼:

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

注:我設定的AutoPostBack的複選框次要=真實支票

<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

相關問題