如题,小弟被此问题困扰多时,不曾解决,望各位大侠不吝赐教,小弟不胜感激!

解决方案 »

  1.   

    问题说详细点,是在DataGridView中取数据保存到数据库么?
      

  2.   

    http://hi.baidu.com/probspy/blog/item/a20488f3a04eee55352accb7.html
      

  3.   

    DataGridView增加一记录后,绑定的DataSource也会增加相应的记录,
    把数据源增加的记录保存入库即可
      

  4.   

    开始不绑定到数据库,直接望DataGridView中添加数据,然后再写回到数据库!
      

  5.   

    1. // 数据库联接        private System.Data.DataTable dbconn(string strSql)
            {
                string strconn = "host=localhost;database=test;user id=root;password=";
                conn = new MySqlConnection();
                conn.ConnectionString = strconn;
                conn.Open();
                this.adapter = new MySqlDataAdapter(strSql, conn);
                System.Data.DataTable dtSelect = new System.Data.DataTable();
                int rnt=this.adapter.Fill(dtSelect);
                conn.Close();
                return dtSelect;
                                   
            }2.       //设定DataGridView的样式       private void setDgStyle()
            {
                this.dgselect.Columns.Clear();            DataGridViewCheckBoxColumn colDel = new DataGridViewCheckBoxColumn();
                colDel.DataPropertyName = "Del";
                colDel.Name = "Del";
                colDel.Selected = false;
                colDel.FalseValue = "0";
                colDel.TrueValue = "1";
                colDel.Width = 40;
                colDel.SortMode = DataGridViewColumnSortMode.NotSortable;
                colDel.HeaderText = "删除";
                colDel.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                colDel.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                this.dgselect.Columns.Insert(0, colDel);            DataGridViewTextBoxColumn colID = new DataGridViewTextBoxColumn();
                colID.DataPropertyName = "ProductsSpecID";
                colID.Name = "ProductsSpecID";
                colID.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                colID.HeaderText = "产品规格ID";
                colID.Width = 160;
                this.dgselect.Columns.Insert(1, colID);            DataGridViewTextBoxColumn colNM = new DataGridViewTextBoxColumn();
                colNM.DataPropertyName = "ProductsSpec";
                colNM.Name = "ProductsSpec";
                colNM.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                colNM.HeaderText = "产品规格名称";
                colNM.Width = 160;
                this.dgselect.Columns.Insert(2, colNM);            DataGridViewTextBoxColumn colUnit = new DataGridViewTextBoxColumn();
                colUnit.DataPropertyName = "ProductsSpecUnit";
                colUnit.Name = "ProductsSpecUnit";
                colUnit.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                colUnit.HeaderText = "产品规格单位";
                colUnit.Width = 180;
                this.dgselect.Columns.Insert(3, colUnit);            DataGridViewTextBoxColumn colPID = new DataGridViewTextBoxColumn();
                colPID.DataPropertyName = "ProductsID";
                colPID.Name = "ProductsID";
                colPID.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                colPID.HeaderText = "产品ID";
                colPID.Width = 140;
                this.dgselect.Columns.Insert(4, colPID);            DataGridViewButtonColumn colButton = new DataGridViewButtonColumn();
                colButton.DataPropertyName = "colSearch";
                colButton.Name = "colSearch";
                colButton.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                colButton.HeaderText = "Button";
                colButton.Width = 80;
                this.dgselect.Columns.Insert(5, colButton);            this.dgselect.RowHeadersWidth = 15;
                this.dgselect.ColumnHeadersDefaultCellStyle.Font=new System.Drawing.Font("宋体",14);
                         
            }3.   //修改数据,并将数据提交到数据库private Boolean dbUpdate()
            {
                string strSql = "select ProductsSpecID,ProductsSpec,ProductsSpecUnit,ProductsID from                       tbl_product_detail_master";
                System.Data.DataTable dtUpdate = new System.Data.DataTable();
                dtUpdate = this.dbconn(strSql);
                dtUpdate.Rows.Clear();            System.Data.DataTable dtShow = new System.Data.DataTable();
                //dtShow = (DataTable)this.bindSource.DataSource;
                dtShow = (System.Data.DataTable)this.dgselect.DataSource;            int p1 = dtShow.Rows.Count;
               // try
               // {                for (int i = 0; i < dtShow.Rows.Count; i++)
                    {
                       DataRowState rowState=new DataRowState();
                       rowState=dtShow.Rows[i].RowState;
                       if (rowState==DataRowState.Added || rowState==DataRowState.Detached || rowState==DataRowState.Modified)
                        {                        if (this.dgselect["Del", i].Value.ToString() == "1")
                            {
                                dtShow.Rows[i].Delete();
                            }
                        }
                    }
                    
                for (int i = 0; i < dtShow.Rows.Count; i++)
                {
                    dtUpdate.ImportRow(dtShow.Rows[i]);
                }
                int num = dtUpdate.Rows.Count;
                try
                {
                    this.conn.Open();
                    
                    trans = this.conn.BeginTransaction();                MySqlCommandBuilder CommandBuiler;
                    CommandBuiler = new MySqlCommandBuilder(this.adapter);                this.adapter.Update(dtUpdate);
                    trans.Commit();
                    this.conn.Close();            }
                catch ( Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString());
                    trans.Rollback();
                    return false;
                }            dtUpdate.AcceptChanges();
                 return true;        }
      

  6.   

    那你可以循环遍历DataGridView,获取其中的值,然后在循环中插入数据库!
    循环取应该知道吧!
      

  7.   


    for (int i = 0; i < this.DataGridView1.Rows.Count - 1; i++)
    {
    DataGridView1.Rows[i].Cells[0].Value...
    DataGridView1.Rows[i].Cells[1].Value...
    ...
    }这样
      

  8.   


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Data;
    using System.Data.SqlClient;namespace SqlDataAdapterTest
    {
        public partial class Form1 : Form
        {
            SqlDataAdapter da;
            public Form1()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
                SqlCommandBuilder cb = new SqlCommandBuilder(da);
                DataTable dt = this.dataGridView1.DataSource as DataTable;
                if (dt != null)
                {
                    da.Update(dt);
                    dt.AcceptChanges();
                    //BindData();
                }
            }        private void Form1_Load(object sender, EventArgs e)
            {            BindData();
            }        void BindData()
            {
                SqlConnection conn = new SqlConnection("Server=.;Integrated Security=True;Database=Northwind");
                da = new SqlDataAdapter();
                da.SelectCommand = new SqlCommand("select * from Employees", conn);
                DataTable dt = new DataTable();
                da.Fill(dt);
                this.dataGridView1.DataSource = dt;
            }
        }
    }
    要这个demo完整代码用站内信密我.
      

  9.   

    大家看我这句代码有什么错误,怎么说是未将对象引用到实例!
    myRow["xuehao"] = this.dataGridView1.Rows[i].Cells["Column1"].Value.ToString();
      

  10.   

    this.dataGridView1.Rows[i].Cells["Column1"].Value
    如果这个里面没值的话就会报错,
    你先判断是否为null再赋值!