使用TableBindingNavigator删除行后,TableAdapter.Update无法正常工作

时间:2014-04-16 05:21:16

标签: c# tableadapter bindingnavigator

我真的很感谢你的帮助,因为我现在已经两天苦苦挣扎了。

当我第一次构建解决方案时,我可以添加新记录,删除/编辑任何数据值,一切正常。然后,我可以使用TableBindingNavigator中的保存按钮保存数据,到目前为止,一切仍然正常。

但是,在第一次保存后,我删除或编辑表中的任何现有数据值后无法再次保存,尽管表格网视图将在我编辑/删除时更新。我收到以下错误: 如果我单击“保存”,则会收到错误消息“#34;更新需要有效的DeleteCommand才能传递带有已删除行的DataRow集合。" 如果我编辑任何数据,我会收到错误说"当传递带有修改行的DataRow集合时,更新需要有效的UpdateCommand。"

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 Hatch_Optimizer.Properties;

namespace Hatch_Optimizer
{
public partial class frmMain : Form
{
    public frmMain()
    {
        InitializeComponent();

    }

    private void tblVarBindingNavigatorSaveItem_Click_1(object sender, EventArgs e)
    {
        this.Validate();
        this.tblVarBindingSource.EndEdit();
        tblVarTableAdapter.Update(this.dsHatchOpt);
        //this.tableAdapterManager.UpdateAll(this.dsHatchOpt);
    }

    private void tblResBindingNavigatorSaveItem_Click_1(object sender, EventArgs e)
    {
        this.Validate();
        this.tblVarBindingSource.EndEdit();
        tblResTableAdapter.Update(this.dsHatchOpt.tblRes);
       this.tableAdapterManager.UpdateAll(this.dsHatchOpt);
    }



    private void frmMain_Load(object sender, EventArgs e)
    {

        this.tblResTableAdapter.Fill(this.dsHatchOpt.tblRes);
        this.tblResTableAdapter.Fill(this.dsHatchOpt.tblRes);
        this.tblResTableAdapter.Fill(this.dsHatchOpt.tblRes);
        this.tblResTableAdapter.Fill(this.dsHatchOpt.tblRes);
        this.tblResTableAdapter.Fill(this.dsHatchOpt.tblRes);
        this.tblVarTableAdapter.Fill(this.dsHatchOpt.tblVar);

    }    

1 个答案:

答案 0 :(得分:0)

如果你转到你的表适配器属性,你会发现InsertCommand,UpdateCommand,DeleteCommand,SelectCommand等命令..... 在这些中,必须像下面的示例一样定义commandtext属性 它不是一个合适的,不检查任何东西只是根据特定列的行位置从数据表中删除选定的行

从你的表中删除

WHERE(yourColumname =?)


我希望能帮助