现在这样添加二次的时候前面的数据就会被覆盖,不知道怎么写才能添加多行数据到DataTable中。
 
protected void Page_Load(object sender, EventArgs e)
        {
            
        }
        protected void ADD_Click(object sender, EventArgs e)
        {            DataSet ds = new DataSet();
            DataTable TransInfo = new DataTable("TransInfo");
            TransInfo.Columns.Add(new DataColumn("lotNo", typeof(string)));
            TransInfo.Columns.Add(new DataColumn("carrierCode", typeof(string)));
            TransInfo.Columns.Add(new DataColumn("TSPCode", typeof(string)));
            TransInfo.Columns.Add(new DataColumn("Port", typeof(string)));
            TransInfo.Columns.Add(new DataColumn("ETD", typeof(string)));
            TransInfo.Columns.Add(new DataColumn("ETA", typeof(string)));
            TransInfo.Columns.Add(new DataColumn("portType", typeof(string)));
            TransInfo.Columns.Add(new DataColumn("transMode", typeof(string)));
            TransInfo.Columns.Add(new DataColumn("Res", typeof(string)));            
            ds.Tables.Add(TransInfo);
            
            DataRow dr = ds.Tables["TransInfo"].NewRow();           
            dr["lotNo"] = this.textLotNo.Text;
            dr["carrierCode"] = this.textCarrierCode.Text;
            dr["TSPCode"] = this.textTSPCode.Text;
            dr["Port"] = this.textPort.Text;
            dr["ETD"] = this.textETD.Text;
            dr["ETA"] = this.textETA.Text;
            dr["portType"] = this.DDLPortType.SelectedValue;
            dr["transMode"] = this.DDLTransMode.SelectedValue;
            dr["Res"] = this.textRes.Text;
            ds.Tables["TransInfo"].Rows.Add(dr);
           
            this.GridView1.DataSource = ds.Tables["TransInfo"];
            this.GridView1.DataBind();
        }

解决方案 »

  1.   

    DataSet ds = new DataSet();
      DataTable TransInfo = new DataTable("TransInfo");
      TransInfo.Columns.Add(new DataColumn("lotNo", typeof(string)));
      TransInfo.Columns.Add(new DataColumn("carrierCode", typeof(string)));
      TransInfo.Columns.Add(new DataColumn("TSPCode", typeof(string)));
      TransInfo.Columns.Add(new DataColumn("Port", typeof(string)));
      TransInfo.Columns.Add(new DataColumn("ETD", typeof(string)));
      TransInfo.Columns.Add(new DataColumn("ETA", typeof(string)));
      TransInfo.Columns.Add(new DataColumn("portType", typeof(string)));
      TransInfo.Columns.Add(new DataColumn("transMode", typeof(string)));
      TransInfo.Columns.Add(new DataColumn("Res", typeof(string)));   
      ds.Tables.Add(TransInfo);
    ---这些你拖个控件写,问题就解决了!(错误的原因是:不能把dataset 每次都new一次,table也new 了一次,要申明为全局变量,这样数据行就会累积~)
      

  2.   

    guoyanhong1111请问需要拖一个什么控件来写?我的目的是想把很多条数据一条一条的添加到一个DataTable里面,然后用GridView显示出来,如果输入的数据有错误可以点击GridView里面相应的行进行修改,最后把正确的数据一次性写入数据库。
      

  3.   

    你每点击一次,触发 Add_Click事件,就新构造一个dataset、然后构造并加入一个新table,接着又绑定给grid。
    每次都是新的xxxx,之前一次的没有引用就被回收了。说得直白一点,你的dataset应该和grid共存亡吧。
      

  4.   

      DataSet ds = new DataSet();
      DataTable TransInfo = new DataTable("TransInfo");
    //上面这两句放在外面声明。  TransInfo.Columns.Add(new DataColumn("lotNo", typeof(string)));
      TransInfo.Columns.Add(new DataColumn("carrierCode", typeof(string)));
      TransInfo.Columns.Add(new DataColumn("TSPCode", typeof(string)));
      TransInfo.Columns.Add(new DataColumn("Port", typeof(string)));
      TransInfo.Columns.Add(new DataColumn("ETD", typeof(string)));
      TransInfo.Columns.Add(new DataColumn("ETA", typeof(string)));
      TransInfo.Columns.Add(new DataColumn("portType", typeof(string)));
      TransInfo.Columns.Add(new DataColumn("transMode", typeof(string)));
      TransInfo.Columns.Add(new DataColumn("Res", typeof(string)));   
      ds.Tables.Add(TransInfo);
     //这些添加列的可以放在load事件进行初始化。这样就可以解决了。
     //因为你每添加一条数据数据集就重新实例化一次前面的数据就没有了。所以
     // DataSet ds = new DataSet();
     // DataTable TransInfo = new DataTable("TransInfo");
     //这两个要当全局变量。列在load时间初始化一次就可以了。
     //当然这两个变量可以先申明,再到load事件初始化。