localhost.Service mys;
    DataTable dt;
    DoTrans mytran;
    DB db;
    Model.UserInfo model;
    protected void Page_Load(object sender, EventArgs e)
    {
        
        Random myr = new Random();
        mys = new localhost.Service();
        mytran = new DoTrans();
        Label1.Text=  DateTime.Now.ToString().Replace("-", "").Replace(":", "").Replace(" ", "") + myr.Next() % 1000;
        Label2.Text = Session["username"].ToString();
        Label3.Text = DateTime.Now.ToString();        db = new DB();
        model = new Model.UserInfo();
        model.Name = Session["username"].ToString();
        DataTable dt = new DataTable();
        dt = db.getznumbyname(model);
        Label4.Text=dt.Rows[0][0].ToString();        DataTable dt1 = new DataTable();
        dt = db.getzprice(model);
        Label5.Text=dt.Rows[0][0].ToString();
        
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        if (Session["username"] == null)
        {
            Response.Write("<script>alert('您还没有登录,请登录后再购买,谢谢合作!');location='login.aspx';</script>");
        }
        else
        {
            Random myr = new Random();
            localhost.RenWu renwu = new localhost.RenWu();
            renwu.rwid = Label1.Text;
            renwu.fromPerson = Label2.Text;
            renwu.toPerson = txtGType.Text;
            renwu.sendTime = Convert.ToDateTime(Label3.Text);
            renwu.place = txtGPrice.Text;
            renwu.zNum =Convert.ToInt32( Label4.Text);
            renwu.zprice = Convert.ToDouble(Label5.Text);
            renwu.note = TextBox1.Text;            db=new DB();
            model = new Model.UserInfo();
            model.Name=Session["username"].ToString();
            DataTable dt=new DataTable();
            
            dt=db.psall(model);
            //int j = dt.Rows.Count;
            renwu.MX = new localhost.mingxi[dt.Rows.Count];
            for (int i=0; i <dt.Rows.Count ; i++)
            {                renwu.MX[i] = new localhost.mingxi();                //Label6.Text = dt.Rows[i][0].ToString();
                renwu.MX[i].spname = dt.Rows[i][2].ToString();
                renwu.MX[i].price = Convert.ToDouble(dt.Rows[i][1].ToString());
                renwu.MX[i].zprice = Convert.ToDouble(dt.Rows[i][4].ToString());
                renwu.MX[i].num = Convert.ToInt32(dt.Rows[i][3].ToString());
                renwu.MX[i].spid = Convert.ToInt32(dt.Rows[i][0].ToString());
                renwu.MX[i].note = "haoma";
                if (mys.AddRW(renwu))
                {
                    Response.Redirect("shopping.aspx");
                }
                else
                    Response.Write("jiezhangshibai ");
            }        }
    }
    2.上面的if(mys.addrw(renwu))中的addrw()方法代码如下: 
      [WebMethod] 
    public bool AddRW(RenWu rw) 
    { 
        try 
        { 
            Hashtable sqlht = new Hashtable(); 
            sqlht.Add("1", "insert into t_rw(rwid,fromPerson,toPerson,sendTime,place,znum,zprice,status,note) values('" + rw.rwid + "','" + rw.fromPerson + "','" + rw.toPerson + "','" + rw.sendTime + "','" + rw.place + "','" + rw.zNum + "','" + rw.zprice + "','未配送','" + rw.note + "')"); 
            for (int i = 0; i < rw.MX.Length; i++) 
            { 
                sqlht.Add((i + 2).ToString(), "insert into t_rwdetail(rwid,spid,spname,price,num,zprice,note) values('" + rw.rwid + "','" + rw.MX[i].spid + "','" + rw.MX[i].spname + "','" + rw.MX[i].price + "','" + rw.MX[i].num + "','" + rw.MX[i].zprice + "','" + rw.MX[i].note + "')"); 
            } 
            return myTran.DoManyTran(sqlht);//它的代码在下面 
        } 
        catch 
        { 
            return false; 
        } 
    } 
    [WebMethod] 
3.DoManyTran(sql)方法代码如下: 
        public bool DoManyTran(Hashtable sqls) 
      { 
          //建立连接并打开           myConn.Open();           SqlCommand myComm = new SqlCommand(); 
          SqlTransaction myTran; 
          //创建一个事务 
          myTran = myConn.BeginTransaction(System.Data.IsolationLevel.Serializable, "begin"); 
          //从此开始,基于该连接的数据操作都被认为是事务的一部分 
          //下面绑定连接和事务对象 
          myComm.Connection = myConn; 
          myComm.Transaction = myTran; 
          try 
          { 
              if (sqls.Count>0) 
              { 
                  for (int i = 1; i <= sqls.Count; i++) 
                  { 
                      myComm.CommandText = (string)sqls[i.ToString()]; 
                      int m=myComm.ExecuteNonQuery(); 
                  } 
              } 
              //提交事务 
              myTran.Commit(); 
              return true;           } 
          catch (Exception err) 
          { 
              //更新错误,回滚到指定存储点 
              myTran.Rollback("begin"); 
              return false; 
          } 
          finally 
          { 
              myConn.Close(); 
          } 
      } 上面执行到第二步的时候会出现异常说没有将对象引用到实例,其实真正的错误是在 for (int i = 0; i < rw.MX.Length; i++) 
            { 
                sqlht.Add((i + 2).ToString(), "insert into t_rwdetail(rwid,spid,spname,price,num,zprice,note) values('" + rw.rwid + "','" + rw.MX[i].spid + "','" + rw.MX[i].spname + "','" + rw.MX[i].price + "','" + rw.MX[i].num + "','" + rw.MX[i].zprice + "','" + rw.MX[i].note + "')"); 
            } 
这里面的rw。MX[i]中本来在1中生成了三条记录的但是到这里以后第二条和第三条的记录就是空了所以我认为是
 dt=db.psall(model);
            //int j = dt.Rows.Count;
            renwu.MX = new localhost.mingxi[dt.Rows.Count];
            for (int i=0; i <dt.Rows.Count ; i++)
            {                renwu.MX[i] = new localhost.mingxi();                //Label6.Text = dt.Rows[i][0].ToString();
                renwu.MX[i].spname = dt.Rows[i][2].ToString();
                renwu.MX[i].price = Convert.ToDouble(dt.Rows[i][1].ToString());
                renwu.MX[i].zprice = Convert.ToDouble(dt.Rows[i][4].ToString());
                renwu.MX[i].num = Convert.ToInt32(dt.Rows[i][3].ToString());
                renwu.MX[i].spid = Convert.ToInt32(dt.Rows[i][0].ToString());
                renwu.MX[i].note = "haoma";
这里面有错误但是我不知道具体错误在哪里请高手帮忙指点。