我是这个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”标签可见。但是当我检查“4轮车”时,它并没有显示两个标签。我想知道我在哪里弄错了。此外,当我取消选中两个复选框时,会生成Null引用异常。
你可以帮我解决这些问题吗? 1.选中两个复选框都应显示两个标签。 2.取消选择不应产生空引用异常。提前致谢 问候, 阿布舍克巴克
答案 0 :(得分:1)
查看ListControl有关如何使用Items
属性确定CheckBoxList中所选项的示例。 SelectedItem
属性返回索引最低的项。如果未选择任何项目,SelectedItem
将返回null,这就是您将获得空引用异常的原因。
答案 1 :(得分: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 :(得分: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();
}
}
}
}