protected void Page_Load(object sender, EventArgs e)
    {
        table_black.Visible = false;
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        DataColumn bianhao1 = new DataColumn("bianhao", Type.GetType("System.String"));
        DataColumn mingcheng1 = new DataColumn("mingcheng", Type.GetType("System.String"));
        DataColumn yanse1 = new DataColumn("yanse", Type.GetType("System.String"));
        DataColumn chima1 = new DataColumn("chima", Type.GetType("System.String"));
        DataColumn shuliang1 = new DataColumn("shuliang", Type.GetType("System.String"));
        dt.Columns.Add(bianhao1);
        dt.Columns.Add(mingcheng1);
        dt.Columns.Add(yanse1);
        dt.Columns.Add(chima1);
        dt.Columns.Add(shuliang1);         DataRow _newRow = dt.NewRow();
        _newRow["bianhao"] = bianhao.Text.ToString();
        _newRow["mingcheng"] = bianhao.Text.ToString();
        _newRow["yanse"] = bianhao.Text.ToString();
        _newRow["chima"] = bianhao.Text.ToString();
        _newRow["shuliang"] = bianhao.Text.ToString();
        dt.Rows.Add(_newRow);
        GridView1.DataSource = dt;
        GridView1.DataBind();
        table_black.Visible = Visible;
    }

解决方案 »

  1.   

    你每次点击,都会执行DataTable dt = new DataTable(); 
    创建一个新DataTable ,行数是0 ,然后dt.Rows.Add(_newRow); 
    添加了一行,所以总是添加一行。把DataTable dt 声明为全局变量就可以了
      

  2.   

    咋定义???我放在Page_Load里面,下面就又出错了。
      

  3.   

    可是具体怎么声明啊 晕啊。。我已经放在Page_Load里面了。可是说下面的dt出错。
      

  4.   

        DataTable dt = new DataTable();     protected void Page_Load(object sender, EventArgs e) 
        { 
            table_black.Visible = false; 
        } 
        protected void Button1_Click(object sender, EventArgs e) 
        { 
            
            DataColumn bianhao1 = new DataColumn("bianhao", Type.GetType("System.String")); 
            DataColumn mingcheng1 = new DataColumn("mingcheng", Type.GetType("System.String")); 
            DataColumn yanse1 = new DataColumn("yanse", Type.GetType("System.String")); 
            DataColumn chima1 = new DataColumn("chima", Type.GetType("System.String")); 
            DataColumn shuliang1 = new DataColumn("shuliang", Type.GetType("System.String")); 
            dt.Columns.Add(bianhao1); 
            dt.Columns.Add(mingcheng1); 
            dt.Columns.Add(yanse1); 
            dt.Columns.Add(chima1); 
            dt.Columns.Add(shuliang1);         DataRow _newRow = dt.NewRow(); 
            _newRow["bianhao"] = bianhao.Text.ToString(); 
            _newRow["mingcheng"] = bianhao.Text.ToString(); 
            _newRow["yanse"] = bianhao.Text.ToString(); 
            _newRow["chima"] = bianhao.Text.ToString(); 
            _newRow["shuliang"] = bianhao.Text.ToString(); 
            dt.Rows.Add(_newRow); 
            GridView1.DataSource = dt; 
            GridView1.DataBind(); 
            table_black.Visible = Visible; 
        }
      

  5.   

    把DataTable dt 声明为全局变量就可以了
      

  6.   

    DataColumn  好像要放到Load中了  不然点一下Button 又会追加列
      

  7.   

    DataTable dt = (DataTable)GridView1.DataSource ; 
    if(dt==null)   dt = new DateTable();在button里这么声明就可以了
      

  8.   

    你每次都new一个新的DataTable当然是只有一行喽
      

  9.   

    我现在这样了,可是还是一行public partial class admin_Admin_SubmitReturnAdd : System.Web.UI.Page
    {
        DataTable dt = new DataTable();
        protected void Page_Load(object sender, EventArgs e)
        {
            table_black.Visible = false;
            DataColumn bianhao1 = new DataColumn("bianhao", Type.GetType("System.String"));
            DataColumn mingcheng1 = new DataColumn("mingcheng", Type.GetType("System.String"));
            DataColumn yanse1 = new DataColumn("yanse", Type.GetType("System.String"));
            DataColumn chima1 = new DataColumn("chima", Type.GetType("System.String"));
            DataColumn shuliang1 = new DataColumn("shuliang", Type.GetType("System.String"));
            dt.Columns.Add(bianhao1);
            dt.Columns.Add(mingcheng1);
            dt.Columns.Add(yanse1);
            dt.Columns.Add(chima1);
            dt.Columns.Add(shuliang1);
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            DataRow _newRow = dt.NewRow();
            _newRow["bianhao"] = bianhao.Text.ToString();
            _newRow["mingcheng"] = bianhao.Text.ToString();
            _newRow["yanse"] = bianhao.Text.ToString();
            _newRow["chima"] = bianhao.Text.ToString();
            _newRow["shuliang"] = bianhao.Text.ToString();
            dt.Rows.Add(_newRow);
            GridView1.DataSource = dt;
            GridView1.DataBind();
            table_black.Visible = Visible;
        }
    }
      

  10.   

    因为你每次走完button里的代码之后,再进来dt还是没有行的
    你用10楼的方法就好了
      

  11.   


    if(!IsPostBck)
    {
    //定义列
    }
      

  12.   

    我按照10楼的方法这样做了。还是只能添加一条。public partial class admin_Admin_SubmitReturnAdd : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            table_black.Visible = false;
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            DataTable dt = (DataTable)GridView1.DataSource;
            if (dt == null)
            {
                dt = new DataTable();
                DataColumn bianhao1 = new DataColumn("bianhao", Type.GetType("System.String"));
                DataColumn mingcheng1 = new DataColumn("mingcheng", Type.GetType("System.String"));
                DataColumn yanse1 = new DataColumn("yanse", Type.GetType("System.String"));
                DataColumn chima1 = new DataColumn("chima", Type.GetType("System.String"));
                DataColumn shuliang1 = new DataColumn("shuliang", Type.GetType("System.String"));
                dt.Columns.Add(bianhao1);
                dt.Columns.Add(mingcheng1);
                dt.Columns.Add(yanse1);
                dt.Columns.Add(chima1);
                dt.Columns.Add(shuliang1);
            }
            
            DataRow _newRow = dt.NewRow();
            _newRow["bianhao"] = bianhao.Text.ToString();
            _newRow["mingcheng"] = bianhao.Text.ToString();
            _newRow["yanse"] = bianhao.Text.ToString();
            _newRow["chima"] = bianhao.Text.ToString();
            _newRow["shuliang"] = bianhao.Text.ToString();
            dt.Rows.Add(_newRow);
            GridView1.DataSource = dt;
            GridView1.DataBind();
            table_black.Visible = Visible;
        }
    }
      

  13.   

    我上面说错了
    每次都走DataTable dt = new DataTable(); 
    你放到缓存里吧
      

  14.   

    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                DataColumn bianhao1 = new DataColumn("bianhao", Type.GetType("System.String"));
                DataColumn mingcheng1 = new DataColumn("mingcheng", Type.GetType("System.String"));
                DataColumn yanse1 = new DataColumn("yanse", Type.GetType("System.String"));
                DataColumn chima1 = new DataColumn("chima", Type.GetType("System.String"));
                DataColumn shuliang1 = new DataColumn("shuliang", Type.GetType("System.String"));
                db.dt.Columns.Add(bianhao1);
                db.dt.Columns.Add(mingcheng1);
                db.dt.Columns.Add(yanse1);
                db.dt.Columns.Add(chima1);
                db.dt.Columns.Add(shuliang1);
            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            DataRow _newRow = db.dt.NewRow();
            _newRow["bianhao"] = 2.ToString();
            _newRow["mingcheng"] = 3.ToString();
            _newRow["yanse"] = 6.ToString();
            _newRow["chima"] = 7.ToString();
            _newRow["shuliang"] = 8.ToString();
            db.dt.Rows.Add(_newRow);
            GridView1.DataSource = db.dt;
            GridView1.DataBind();
        }
    这是代码,就是你原来的代码,稍加改动
    你在项目里新加一个类,类里面写一句代码
    public class db
    {
        public static DataTable dt = new DataTable();
    }
    就可以实现了应该还有更好的方法
      

  15.   


            public Form2()
            {
                InitializeComponent();
            }        private DataTable dt = new DataTable();
            private void Form2_Paint(object sender, PaintEventArgs e)
            {
               dt.Columns.Add(new DataColumn("列1"));
               dt.Columns.Add(new DataColumn("列2"));        }        private void button1_Click(object sender, EventArgs e)
            {
                DataRow dr = dt.NewRow();
                dt.Rows.Add(dr);            dt.Rows[dt.Rows.Count - 1]["列1"] = "111";
                dt.Rows[dt.Rows.Count - 1]["列2"] = "111";            dataGridView1.DataSource = dt;        }
        }
      

  16.   


            private DataTable dt = new DataTable();
            private void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    dt.Columns.Add(new DataColumn("列1"));
                    dt.Columns.Add(new DataColumn("列2"));
                }
            }
            private void button1_Click(object sender, EventArgs e)
            {
                DataRow dr = dt.NewRow();
                dt.Rows.Add(dr);            dt.Rows[dt.Rows.Count - 1]["列1"] = "111";
                dt.Rows[dt.Rows.Count - 1]["列2"] = "111";            dataGridView1.DataSource = dt;        }/*上面搞错了............我是在winform中测试的   妈的一直Server is too busy 不要我发了*/
      

  17.   

    修改代码如下:
    protected void Button1_Click(object sender, EventArgs e) 

            DataTable dt = null;
            if(Session["db"] == null)
            {
              dt = new DataTable(); 
              DataColumn bianhao1 = new DataColumn("bianhao", Type.GetType("System.String")); 
              DataColumn mingcheng1 = new DataColumn("mingcheng", Type.GetType("System.String")); 
              DataColumn yanse1 = new DataColumn("yanse", Type.GetType("System.String")); 
              DataColumn chima1 = new DataColumn("chima", Type.GetType("System.String")); 
              DataColumn shuliang1 = new DataColumn("shuliang", Type.GetType("System.String")); 
              dt.Columns.Add(bianhao1); 
              dt.Columns.Add(mingcheng1); 
              dt.Columns.Add(yanse1); 
              dt.Columns.Add(chima1); 
              dt.Columns.Add(shuliang1);         } 
            else
            {
                dt = (DataTable)Session["db"];
            }
            
            DataRow _newRow = dt.NewRow(); 
            _newRow["bianhao"] = bianhao.Text.ToString(); 
            _newRow["mingcheng"] = bianhao.Text.ToString(); 
            _newRow["yanse"] = bianhao.Text.ToString(); 
            _newRow["chima"] = bianhao.Text.ToString(); 
            _newRow["shuliang"] = bianhao.Text.ToString(); 
            dt.Rows.Add(_newRow); 
            GridView1.DataSource = dt; 
            GridView1.DataBind(); 
            table_black.Visible = Visible; 
        }
      

  18.   

    貌似我的问题是一个购物车。楼上的加上Session["db"] = dt;就对了。现在问题暂时解决,我还要删除每行,,修改每行努力
      

  19.   

    可是session存储的数据很有限啊。晕啊。           
      

  20.   

    Cache 取网上找找,不是很难用!
      

  21.   

    你每次都一个button click都一个新的DataTable, 然后绑定到Grid上都是这个新的一行的DataTable, 你把DataTable放到外面去定义.
      

  22.   

           public  DataTable dt = new DataTable();//把datatable放到外面就可以了啊 我用了可以添加
            private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e)
            {            NewMethod(Convert.ToString(this.comboBox1.SelectedValue));
                this.dataGridView1.DataSource = dt;
            }        private void NewMethod(string enter)
            {
                 
                 if (dt.Columns.Count == 0)
                 {
                     dt.Columns.Add("Id", typeof(System.Int32));
                     dt.Columns.Add("入库单号", typeof(System.String));
                 }
                DataRow dr = dt.NewRow();
                if (textBox2.Text.Trim() == "")
                {
                    dr[0] = 1;
                    dr[1] = Convert.ToInt64(enter);
                    textBox2.Text = "1";
                    dt.Rows.Add(dr);
                }
                else
                {
                    dr[0] = Convert.ToInt32(textBox2.Text) + 1;
                    dr[1] = Convert.ToInt64(enter);
                    textBox2.Text = Convert.ToString(Convert.ToInt32(textBox2.Text) + 1);
                    dt.Rows.Add(dr);
                }
             
            }
      

  23.   


    得再加个 static 才行哦。public static DataTable dt = new DataTable()
      

  24.   


    DataTable dt = new DataTable();
      DataColumn bianhao1 = new DataColumn("bianhao", Type.GetType("System.String"));
      DataColumn mingcheng1 = new DataColumn("mingcheng", Type.GetType("System.String"));
      DataColumn yanse1 = new DataColumn("yanse", Type.GetType("System.String"));
      DataColumn chima1 = new DataColumn("chima", Type.GetType("System.String"));
      DataColumn shuliang1 = new DataColumn("shuliang", Type.GetType("System.String"));
      dt.Columns.Add(bianhao1);
      dt.Columns.Add(mingcheng1);
      dt.Columns.Add(yanse1);
      dt.Columns.Add(chima1);
      dt.Columns.Add(shuliang1);  
    //把里面的DataTable dt = new DataTable();放到外面就行了,不然你每次点击按钮的话它都重新创建为0了,怎么可能一直加上去
      

  25.   

    protected void Page_Load(object sender, EventArgs e)
      {
        if (!IsPostBack)
                { 
                   table_black.Visible = false;
                 }
       }
     
    将!ispostback加上试试
      

  26.   

    public partial class admin_Admin_SubmitReturnAdd : System.Web.UI.Page
    {
    dataTable dt=null;
      protected void Page_Load(object sender, EventArgs e)
      {
      table_black.Visible = false;
       if(viewstate["table"]!=null)
    {
        dt=(DataTable)viewstate["table"];
    }
      }
      protected void Button1_Click(object sender, EventArgs e)
      {
        if (dt == null)
      {
      dt = new DataTable();
      DataColumn bianhao1 = new DataColumn("bianhao", Type.GetType("System.String"));
      DataColumn mingcheng1 = new DataColumn("mingcheng", Type.GetType("System.String"));
      DataColumn yanse1 = new DataColumn("yanse", Type.GetType("System.String"));
      DataColumn chima1 = new DataColumn("chima", Type.GetType("System.String"));
      DataColumn shuliang1 = new DataColumn("shuliang", Type.GetType("System.String"));
      dt.Columns.Add(bianhao1);
      dt.Columns.Add(mingcheng1);
      dt.Columns.Add(yanse1);
      dt.Columns.Add(chima1);
      dt.Columns.Add(shuliang1);
      }
        
      DataRow _newRow = dt.NewRow();
      _newRow["bianhao"] = bianhao.Text.ToString();
      _newRow["mingcheng"] = bianhao.Text.ToString();
      _newRow["yanse"] = bianhao.Text.ToString();
      _newRow["chima"] = bianhao.Text.ToString();
      _newRow["shuliang"] = bianhao.Text.ToString();
      dt.Rows.Add(_newRow);
      GridView1.DataSource = dt;
      GridView1.DataBind();
    viewstate["table"]=dt;  table_black.Visible = Visible;
      }
    }
      

  27.   

    楼主你好笨、因为是加在if (!IsPostBack)里的
    再回来就是第一次点击了、
      

  28.   


    static DataTable dt=new DataTble();
      

  29.   

    帖子贴了3年没有一个正解,哎!
    TableAdapter对象有一个clearbeforefill的属性,默认值是true.
    设置为false后即可追加填充了。