<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)
没有选中一个复选框就会报错,未将对象引用设置对象的实例,怎么来防止这种错误呢?

解决方案 »

  1.   

    加上判断chbList.SelectedItem.Value是否为null值
      

  2.   

    int value=Convert.ToInt32( chbList.SelectedItem.Value==null?-1:chbList.SelectedItem.Value) 
      

  3.   


        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);
                }
            }
        }
    因為是多選。。所以要判斷每一次都遠中了哪些值。。
    你的問題不在默認選中是哪項
      

  4.   

    protected void checkBL_SelectedIndexChanged(object sender, EventArgs e)
        {
            if(checkBL.SelectedIndex !=-1){
            int key = Convert.ToInt32(checkBL.SelectedItem.Value.ToString());
                    }
        }
    因为你是判断,所以只要确定你选择了checkBL的项就可以,我调试过了,可以
      

  5.   

    protected void checkBL_SelectedIndexChanged(object sender, EventArgs e) 
        { 
            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个人的回答都是正确的。