1

我是这个 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

3 回答 3

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();
                    }
                }                
            }            
        }
于 2012-12-04T08:54:53.447 回答
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

于 2012-12-04T06:19:17.393 回答
1

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

于 2012-12-04T06:09:41.580 回答