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輪車」チェックボックスをオンにすると、「2w」ラベルが表示されます。しかし、「4輪車」をチェックすると、両方のラベルが表示されません。どこを間違えているのか知りたい。また、両方のチェックボックスの選択を解除すると、Null参照例外が生成されます。

これらの問題について私を助けてくれませんか1.両方のチェックボックスをオンにすると、両方のラベルが表示されます。2.選択を解除しても、null参照例外は発生しません。

よろしくお願いします、Abhishek

4

3 に答える 3

1

プロパティを使用してCheckBoxListで選択された項目を判別する方法の例については、ListControlを参照してください。プロパティは、インデックスが最も低いアイテムを返しますItemsSelectedItemアイテムが選択されていない場合、SelectedItemnullを返します。これが、null参照例外を受け取る理由です。

于 2012-12-04T06:09:41.580 に答える
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

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 に答える