【问题标题】:TableAdapter.Update not working after deleting a row using TableBindingNavigator使用 TableBindingNavigator 删除行后 TableAdapter.Update 不起作用
【发布时间】:2014-04-16 05:21:15
【问题描述】:

非常感谢您的帮助,因为我已经为此苦苦挣扎了两天。

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

但是,在第一次保存后,我无法在从表中删除或编辑任何现有数据值后再次保存,尽管表网格视图会在我编辑/删除时更新。我收到以下错误: 如果我单击保存,我会收到一条错误消息,提示“在传递带有已删除行的 DataRow 集合时,更新需要有效的 DeleteCommand。” 如果我编辑任何数据,我会收到一条错误消息,提示“在传递带有已修改行的 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);

    }    

【问题讨论】:

    标签: c# tableadapter bindingnavigator


    【解决方案1】:

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

    从您的表中删除

    WHERE (yourColumnname = ?)


    我希望会有所帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-01
      相关资源
      最近更新 更多