TableAdapter.Update не работает после удаления строки с помощью TableBindingNavigator

Я был бы очень признателен за вашу помощь, так как я боролся с этим уже два дня.

Когда я впервые создаю решение, я могу добавлять новые записи, удалять / редактировать любые значения данных, и все работает отлично. Затем я могу сохранить данные, используя кнопку сохранения в TableBindingNavigator, и до этого момента все по-прежнему работает нормально.

Однако после первого сохранения я не могу сохранить снова после удаления или редактирования какого-либо существующего значения данных из таблицы, хотя представление таблицы будет обновляться по мере редактирования / удаления. Я получаю следующие ошибки: Если я нажимаю "Сохранить", я получаю сообщение об ошибке "Обновление требует допустимой команды DeleteCommand при передаче коллекции DataRow с удаленными строками". Если я редактирую какие-либо данные, я получаю сообщение об ошибке "Обновление требует допустимой команды UpdateCommand при передаче коллекции DataRow с измененными строками".

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 ответ

Если вы перейдете к свойствам адаптера таблицы, там вы найдете команды, такие как InsertCommand,UpdateCommand,DeleteCommand,SelectCommand..... в них свойство commandtext должно быть определено, как в примере ниже. Это не правильная, не проверяет что-нибудь просто удалить выбранную строку из базы данных на основе позиции строки определенного столбца

УДАЛИТЬ ИЗ ВАШЕЙ ТАБЛИЦЫ

ГДЕ (yourColumname =?)


я надеюсь поможет

Другие вопросы по тегам