dataGridView更改数据

无法将类型为“S无法将类型为“System.Windows.Forms.BindingSource”的对象强制转换为类型“System.Data.DataTable”。?... 无法将类型为“S
无法将类型为“System.Windows.Forms.BindingSource”的对象强制转换为类型“System.Data.DataTable”。? 我用的access数据库 数据类型OleDbType.WChar,学的SQL,没学过access不知道为什么不能转换呢···
dataGridView1.EndEdit();
OleDbDataAdapter Ada = new OleDbDataAdapter();
DataTable table = (DataTable)dataGridView1.DataSource;
// DataTable table = ((DataView)dataGridView1.DataSource).ToTable();

String ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.Windows.Forms.Application.StartupPath + "$safeprojectname$ Order Management.accdb"; using (OleDbConnection connection = new OleDbConnection(ConnectionString)) { Ada.SelectCommand = new OleDbCommand("SELECT * FROM 类别", connection); OleDbCommandBuilder builder = new OleDbCommandBuilder(Ada); Ada.UpdateCommand = builder.GetUpdateCommand(); try { Ada.Update(table); table.AcceptChanges(); MessageBox.Show("操作已成功!数据将全部被保存......", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2); } catch (System.Data.OleDb.OleDbException ex) { throw new Exception(ex.Message); } } }
展开
 我来答
玩转数据处理
推荐于2016-02-20 · 数据处理,Python,dotnet
玩转数据处理
采纳数:1613 获赞数:3794

向TA提问 私信TA
展开全部
//我晕,那么乱代码你是怎么写出来的啊
//去掉这行 DataTable table = (DataTable)dataGridView1.DataSource;
//你错误应该是上面语句强制转换为DataTable时报错的,原因可能是dataGridView1.DataSource的数据源不是datatable

//换成我下面的方法看看行不行
String ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.Windows.Forms.Application.StartupPath + "$safeprojectname$ Order Management.accdb";
using (OleDbConnection connection = new OleDbConnection(ConnectionString))
{
    try
    {
        OleDbDataAdapter Bada = new OleDbDataAdapter("SELECT * FROM 类别 WHERE 1=2", connection);
        OleDbCommandBuilder cb = new OleDbCommandBuilder(Bada);
        cb.QuotePrefix = "[";
        cb.QuoteSuffix = "]";
        DataSet ds = new DataSet();
        Bada.Fill(ds, "demo");
        foreach (DataRow tempRow in this.dataGridView1.Rows)
        {
            DataRow dr = ds.Tables["demo"].NewRow();
            dr.ItemArray = tempRow.ItemArray;
            ds.Tables["demo"].Rows.Add(dr);
        }
        if (Bada.Update(ds, "demo") > 0)
        {
            MessageBox.Show("操作已成功!数据将全部被保存......", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2);
        }
    }
    catch (Exception)
    {
    }
}
追问
//执行到这就跳出来了,我设置了断点,不继续往下执行了,数据也没修改成功···
foreach (DataRow tempRow in this.dataGridView1.Rows)
//foreach这不执行,
追答

把你项目压缩发我邮箱看下

1720406057@qq.com

 或者你想办法把datagridview的数据放进DatatTable,然后改

foreach (DataRow tempRow in this.dataGridView1.Rows)


foreach (DataRow tempRow in DataTable)

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式