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 =?)
я надеюсь поможет