【问题标题】:c# checkbox is not workingc#复选框不起作用
【发布时间】:2012-12-04 06:01:40
【问题描述】:

我是这个 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 Wheeler”复选框时,“2 w”标签可见。但是当我检查“四轮车”时,它并没有显示两个标签。我想知道我在哪里犯了错误。此外,当我取消选中这两个复选框时,会生成 Null 引用异常。

你能帮我解决这些问题吗 1. 选中两个复选框应显示两个标签。 2. 取消选择不应该产生空引用异常。

提前致谢 问候, 阿布舍克

【问题讨论】:

  • 你能多测试几次,以不同的顺序检查它们吗?
  • 当你选中“4 Wheeler”时,两个复选框都会被选中吗?
  • @SamIam :我确实以不同的顺序检查了它们。首先检查 2 Wheeler -> 显示 2 w 标签。然后检查 4 Wheeler -> 隐藏 2 w 并显示 4 w。此时两个复选框都被选中。当我取消选择 4 Wheeler -> 显示 2 w 标签。取消选择后都显示空引用异常
  • @JonathanWood:请参考我之前的评论。你可能会找到你的答案。如果我需要清除更多内容,请告诉我

标签: c# asp.net checkboxlist


【解决方案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

【讨论】:

    【解决方案2】:

    查看ListControl 以获取有关如何使用Items 属性来确定CheckBoxList 中选定项目的示例。 SelectedItem 属性返回索引最低的项目。当没有选择任何项目时,SelectedItem 返回 null,这就是为什么您会得到一个 null 引用异常。

    【讨论】:

      【解决方案3】:

      修改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();
                          }
                      }                
                  }            
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-04
        • 2014-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多