protected void Page_Load(object sender, EventArgs e)
        {
            int ID = int.Parse(Request.Params["ID"]);
            int ClassID;
            SqlConnection myConn = new SqlConnection(strconn);
            myConn.Open();
            string mysql = "select * from News where ID = @ID ";
            SqlCommand mycmd = new SqlCommand(mysql, myConn);
            mycmd.Parameters.Add(new SqlParameter("@ID", SqlDbType.Int, 4));
            mycmd.Parameters["@ID"].Value = ID;
            SqlDataReader myReader = mycmd.ExecuteReader(CommandBehavior.CloseConnection);
            if (myReader.Read())
            {
                ClassID = int.Parse(myReader["ClassID"].ToString());
                Tilte.Text = myReader["Tilte"].ToString();
            }
            myReader.Close();            SqlConnection Conn = new SqlConnection(strconn);
            Conn.Open();
            string sql = "select * from ShopClass order by SortNum asc";
            SqlCommand cmd = new SqlCommand(sql, Conn);
            SqlDataReader Dr = cmd.ExecuteReader();
            while (Dr.Read())
            {
                if (ClassID == int.Parse(Dr["ClassID"].ToString()))
                {
                   ClassList = ClassList + "<option value=\"" + Dr["ClassID"] + "\" selected=\"selected\">" + Dr["ClassName"] + "</option>";
                }
                else
                {
                   ClassList = ClassList + "<option value=\"" + Dr["ClassID"] + "\">" + Dr["ClassName"] + "</option>";
                }
            }
            Dr.Close();
            Conn.Close();
        }
提示 if (ClassID == int.Parse(Dr["ClassID"].ToString()))这一行的ClassID
使用了未赋值的局部变量ClassID我在上面已经用 int ClassID;定义过了

解决方案 »

  1.   

    是定义过了,但是有可能没赋值,因为if (myReader.Read())可能不会执行声明变量的地方改成这样就可以了
    int ClassID=int.MinValue;
      

  2.   


    另外建议 SqlConnection myConn = new SqlConnection(strconn);
                myConn.Open();
        ......
    下面的代码放在if(!IsPostBack)
                 {
                 }
      

  3.   

    不赋值是不行的,int classID=-1
      

  4.   

    把page_load里面的代码全部放在
    if(!this.IsPostBack){
    int ClassID=0;
    }
    里面。另外初始时int ClassID=0;
      

  5.   

    方法里面的变量是没有默认值的
    所以定义 int ClassID;
    是不正确的
    支持1楼的
    int ClassID=0;