2012-12-04 87 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(); 
        } 
       }     
      }    
     }