using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using OnLineExam.BusinessLogicLayer;
using OnLineExam.DataAccessLayer;public partial class Teacher_WorkExam : System.Web.UI.Page
{
    string ExamID = "";//试卷编号
    string ExamName = "";//试卷名
    string schoose;//选择题数
    string application;//操作题数
    string CourseID = "";
    string connection = "Server=.;database=InNetEaxm;Integrated Security=true";
    SqlConnection sc = new SqlConnection();
  
    protected void Page_Load(object sender, EventArgs e)
    {
        BaseDBControl dbContol = new BaseDBControl();
        sc.ConnectionString = connection;
         ExamID = Request.QueryString["ExamID"];
       // int ExamID = Convert.ToInt32(Session["ExamID"]);
        SqlCommand cmd = new SqlCommand("select * from ExamInfo where ExamID='" + ExamID + "' and ExamName='"+ExamName+"'", sc);
        sc.Open();
        SqlDataReader sdr = cmd.ExecuteReader();
        while (sdr.Read())
        {
            schoose = sdr["SChooseNum"].ToString();
            application = sdr["ApplicationNum"].ToString();
            CourseID = sdr["CourseID"].ToString();
        }
        sc.Close();
        if (!IsPostBack)
        {
            lblSchoose.Text = "共有" + schoose + "道题";
            lblApplication.Text = "共有" + application + "道题";
        }    }    protected void cbPitch_CheckedChanged(object sender, EventArgs e)
    {
        int i = 0;
        for (int j = 0; j < gvSchoose.Rows.Count; j++)
            if (((CheckBox)gvSchoose.Rows[j].FindControl("cbPitch")).Checked)
                i++;
        lblSchoose1.Text = i.ToString() + "题";
    }
protected void btnOK_Click(object sender, EventArgs e)
    {
       BaseDBControl dbContol = new BaseDBControl();       
        for (int i = 0; i < gvSchoose.Rows.Count; i++)
        {
            if (((CheckBox)gvSchoose.Rows[i].FindControl("cbPitch")).Checked)
            {
                int aa = Int32.Parse((gvSchoose.DataKeys[i].Value).ToString().Trim());
                sc.Open();
                SqlCommand cmd = new SqlCommand("select ID from SingleProblem where ID="+aa, sc);
                string str = cmd.ExecuteScalar().ToString().Trim();
              
                string sqlstr="insert into [WorkExam](ExamID,ScID,Type,CourseID)values('" + ExamID.Trim() + "',
                            '" + str.Trim() + "','选择','" + CourseID.Trim() + "')";
               SqlCommand cmd1 = new SqlCommand(sqlstr, sc);
                int count= cmd1.ExecuteNonQuery();
                sc.Close();
            }
        }
}提示str.Trim() 未将对象引用设置到实例,应该怎样将str中的数据引用
补充:如何将另一个页面数据保存到当前运行页

解决方案 »

  1.   

    看看你cmd.ExecuteScalar().ToString().Trim();
    的结果是什么
      

  2.   

    str为空值了。。补充保存到当前页面用ViewState,用法和Session差不多
      

  3.   

    str为空的话,那应该怎么改?我原意是想读取出gridview中选择题的题号
    如:int aa = Int32.Parse((gvSchoose.DataKeys[i].Value).ToString().Trim());
      sc.Open();
      SqlCommand cmd = new SqlCommand("select ID from SingleProblem where ID="+aa, sc);
      string str = cmd.ExecuteScalar().ToString().Trim();
    然后插入到另一张表中
      

  4.   

    第一个问题可能是你的数据查询出错了,没有取得数据对象。可以在使用str前判断一下是否为空。第二个问题:使用Page.PreviousPage,它是向当前页传输控件的页面。当然使用session也可以。我更喜欢使用前者,会少写一点字。
      

  5.   

     str.Trim() => (str??"").Trim()