2012-12-04 136 views
1

我是這個c#編碼的新手。 我想用複選框編寫代碼。下面是在設計代碼流c#複選框不起作用

<table> 
    <tr> 
     <td align="right"> 
      <asp:Label ID="lblOwn" runat="server" Text="Owned by You :"></asp:Label> 
     </td> 
     <td align="left"> 
      <asp:CheckBoxList ID="chbxOwn" runat="server" 
       OnSelectedIndexChanged="onAckTypeChanged3" AutoPostBack="true"> 
       <asp:ListItem>2 wheeler</asp:ListItem> 
       <asp:ListItem>4 wheeler</asp:ListItem> 
      </asp:CheckBoxList> 
     </td> 
    </tr> 
    <tr> 
     <td align="right"> 
      <asp:Label ID="Label1" runat="server" Text="2 w"></asp:Label> 
     </td> 
    </tr> 
    <tr> 
     <td align="right"> 
      <asp:Label ID="Label2" runat="server" Text="4 w"></asp:Label> 
     </td> 
    </tr> 
</table> 

而且下面的代碼隱藏

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     Hid1(); 
     Hid2(); 
    } 
    protected void onAckTypeChanged3(object sender, EventArgs e) 
    { 
     if (chbxOwn.SelectedItem.Text == "2 wheeler") 
     { 
      Vis1(); 
     } 
     if (chbxOwn.SelectedItem.Text == "4 wheeler") 
     { 
      Vis2(); 
     } 
    } 
    private void Hid1() 
    { 
     Label1.Visible = false; 
    } 
    private void Hid2() 
    { 
     Label2.Visible = false; 
    } 
    private void Vis1() 
    { 
     Label1.Visible = true; 
    } 
    private void Vis2() 
    { 
     Label2.Visible = true; 
    } 
} 

當「2輪車」複選框被選中「2 W」的標籤是可見的。但是,當我檢查「4惠勒」它不顯示兩個標籤。我想知道我在哪裏犯了一個錯誤。另外,當我取消選中這兩個複選框時,會生成一個空引用異常。

可以請你幫我解決這些問題 1.檢查兩個複選框應顯示兩個標籤。 2.取消選擇不應產生空引用異常。

在此先感謝 問候, 阿布舍克

+0

你能多一些時間進行測試,檢查他們以不同的順序等? –

+0

當您檢查「4輪車」時,是否都選中了複選框? –

+0

@SamIam:我用不同的順序檢查了它們。首先檢查2輪車 - >顯示2 w標籤。然後檢查4輪車 - >隱藏2 w並顯示4 w。此時這兩個複選框都被選中。當我取消選擇4惠勒 - >顯示2 w標籤。在取消選擇後顯示空引用異常 –

回答

1

這是你想要什麼:

protected void onAckTypeChanged3(object sender, EventArgs e) 
{ 
    foreach (ListItem item in chbxOwn.Items) 
    { 
     if (item.Text == "2 wheeler" && item.Selected) 
     { 
      Vis1(); 
     } 
     if (item.Text == "4 wheeler" && item.Selected) 
     { 
      Vis2(); 
     } 
    } 
} 

它的工作原理就像一個魅力.. !!

這裏的工作演示:DEMO

1

ListControl關於如何使用Items屬性來確定在CheckBoxList的所選項目的例子。 SelectedItem屬性返回索引最低的項目。當沒有選擇項目時,SelectedItem返回null,這就是爲什麼你會得到空引用異常。

1

修改onAckTypeChanged3事件如下

protected void onAckTypeChanged3(object sender, EventArgs e) 
     { 
      foreach (ListItem checkBoxItem in chbxOwn.Items) 
      { 
       if (checkBoxItem.Selected == true) 
       { 
        if (checkBoxItem.Text == "2 wheeler") 
        { 
         Vis1(); 
        } 
        if (checkBoxItem.Text == "4 wheeler") 
        { 
         Vis2(); 
        } 
       }     
      }    
     }