<asp:CheckBoxList ID="chbList" runat="server" RepeatDirection="Horizontal" OnSelectedIndexChanged="chbList_SelectedIndexChanged" AutoPostBack="true">
<asp:ListItem Text="按机构" Value="1"></asp:ListItem>
<asp:ListItem Text="按部门" Value="2"></asp:ListItem>
<asp:ListItem Text="按员工号" Value="3"></asp:ListItem>
<asp:ListItem Text="按姓名" Value="4" Selected="true"></asp:ListItem>
</asp:CheckBoxList>
最后一个复选框按姓名是默认选中的,当我在后台SelectedIndexChanged事件中int value=Convert.ToInt32( chbList.SelectedItem.Value)
没有选中一个复选框就会报错,未将对象引用设置对象的实例,怎么来防止这种错误呢?
<asp:ListItem Text="按机构" Value="1"></asp:ListItem>
<asp:ListItem Text="按部门" Value="2"></asp:ListItem>
<asp:ListItem Text="按员工号" Value="3"></asp:ListItem>
<asp:ListItem Text="按姓名" Value="4" Selected="true"></asp:ListItem>
</asp:CheckBoxList>
最后一个复选框按姓名是默认选中的,当我在后台SelectedIndexChanged事件中int value=Convert.ToInt32( chbList.SelectedItem.Value)
没有选中一个复选框就会报错,未将对象引用设置对象的实例,怎么来防止这种错误呢?
protected void chbList_SelectedIndexChanged(object sender, EventArgs e)
{
for (int i = 0; i < chbList.Items.Count; i++)
{
if (chbList.Items[i].Selected == true)
{
Response.Write(chbList.Items[i].Value);
}
}
}
因為是多選。。所以要判斷每一次都遠中了哪些值。。
你的問題不在默認選中是哪項
{
if(checkBL.SelectedIndex !=-1){
int key = Convert.ToInt32(checkBL.SelectedItem.Value.ToString());
}
}
因为你是判断,所以只要确定你选择了checkBL的项就可以,我调试过了,可以
{
if(checkBL.SelectedIndex !=-1){
int key = Convert.ToInt32(checkBL.SelectedItem.Value.ToString());
}
}
因为你是判断,所以只要确定你选择了checkBL的项就可以,我调试过了,可以protected void chbList_SelectedIndexChanged(object sender, EventArgs e)
{
for (int i = 0; i < chbList.Items.Count; i++)
{
if (chbList.Items[i].Selected == true)
{
Response.Write(chbList.Items[i].Value);
}
}
}这2个人的回答都是正确的。