A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 黑马田杰 于 2013-2-2 16:37 编辑

源代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace importRow
{
    public partial class Form1 : Form
    {
        SqlConnection conn;
        SqlCommand cmd;
        SqlDataAdapter sda;
        DataSet ds;
        int intIndex;
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            //初始化
            this.button1.Text = "加载数据";
            this.button2.Text = "修改数据";
        }
        private void button1_Click(object sender, EventArgs e)
        {
            //加载数据
            conn = new SqlConnection("server=SHADOW-PC\\SQLEXPRESS;database=test;uid=sa;pwd=123;");
            sda = new SqlDataAdapter("select * from dbo.table_2", conn);
            ds = new DataSet();
            sda.Fill(ds, "cs");
            this.dataGridView1.DataSource = ds.Tables["cs"];
            for (int i = 0; i < this.dataGridView1.ColumnCount; i++)
            {
                this.dataGridView1.Columns.Width = 66;
            }
            this.dataGridView1.Columns[0].ReadOnly = true;
        }
        private void button2_Click(object sender, EventArgs e)
        {
            //修改数据
            DataTable dt = ds.Tables["cs"];
            DataTable dsShow = (DataTable)this.dataGridView1.DataSource;
            dt.ImportRow(dsShow.Rows[intIndex]);
            SqlCommandBuilder comBuilder = new SqlCommandBuilder(sda);
            sda.Update(dt);
        }
        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            intIndex = e.RowIndex;
        }
    }
}

直接在DataGridView控件中修改数据后点击button2按钮可修改成功,但发生如下运行时错误,请问这是什么原因?该如何解决?

updateError.jpg (87.14 KB, 下载次数: 53)

updateError.jpg

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

1 个回复

倒序浏览
1. 将保存提交到数据库,在DataGridView中修改会同步反应到DataSet中;
2. 这样只要将DataSet Update到数据库就是“保存修改”;
3. Update,保存前要dataGridView1.EndEdit();
4. dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
   bindingsource1.EndEdit()已提交正在编辑的修改。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马