protected void rblstAnswers_SelectedIndexChanged(object sender, EventArgs e)
    {        if (rblstAnswers.SelectedItem != null)说明如果选中项不为空时执行下面代码,实际上下面代码已经执行了。
        {
            Session["ddcount"] = (int)Session["ddcount"] + 1;
            Response.Write("<Br>执行了" + Session["ddcount"] + "次!");
            userVotes();
            SqlDataReader drMain = (SqlDataReader)Session["drMain"];
            voteMain objMain = new voteMain();
            GetData(drMain, objMain);
            Session["drMain"] = drMain;
            if (rblstAnswers.SelectedItem == null)说明如果选中项为空时在LABEL中显示选中项为空。
            {
                lblVoteID.Text = "选中项为空";
                Response.End();
            }
            else 如果选中项不为空在LABEL中显示下面内容,这段代码没有执行
                lblVoteID.Text = "selectedValue=" + rblstAnswers.SelectedItem.Text;如果去掉上面的IF判断,这段代码出错,提示为将对象引用设置到对象实例。
        }
        else 如果选中项不为空,执行下面代码。实际这段代码没有执行
            lblVoteID.Text = "执行ELSE后的语句";
    }
大家帮我看看为什么上面会出现矛盾啊?

解决方案 »

  1.   

    运行结果显示:
    执行了1(或2,或3,或4)次!
    lblVoteID中显示:选中项为空
      

  2.   

    你把如下代码注释掉试试:
             userVotes(); 
                SqlDataReader drMain = (SqlDataReader)Session["drMain"]; 
                voteMain objMain = new voteMain(); 
                GetData(drMain, objMain); 
                Session["drMain"] = drMain; 
      

  3.   

    我试了下,发现按Zhanlixin 说的注释掉那几行代码后,就执行 lblVoteID.Text = "selectedValue=" + rblstAnswers.SelectedItem.Text;了,也就是rblstAnswers.SelectedItem != null了。这样就不出现矛盾了。我再一行一行注释找找原因,谢谢Zhanlixin