这是一个非常小的程序,所以我只是将自动生成的代码用于我的数据源,并在我的WinForm上拖放/删除了一个datagridview。我正在尝试手动更新一行中的列,但每次到达tablemanager的“UpdateAll”时它都会失败。这是双击单元格内容的代码:
private void dgv1DataGridView_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{
try
{
string delMemberID = dgv1DataGridView.Rows[e.RowIndex].Cells[0].Value.ToString();
ds1DataSet.Table1.Rows[ds1DataSet.Table1.Rows.IndexOf(ds1DataSet.Table1.FindByMemberID(delMemberID))][9] = MemberID.ToString();
this.Validate();
this.bs1BindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.ds1DataSet);
MessageBox.Show("Replacement Successful");
this.Close();
}
catch
{
MessageBox.Show("Replacement Failed");
}
}
我的期望是;当用户双击datagridview的一行内的任何位置时,它将使用该列的不同“MemberID”更新该行,将数据保存到各处(包括数据库),然后关闭表单(以返回父表单)。
答案 0 :(得分:0)
出于某种原因,我的tableAdapterManager没有链接到该表单上的TableAdapter - 一旦我链接它们,上面的代码工作正常。
更准确地说,我点击了表单的设计视图,然后单击设计窗口底部的tableAdapterManager。然后查看“属性”窗口,我注意到TableAdapter是空白的(如果您使用向导创建DataSource,那么它将被命名为与DataSource中的表相同)。一旦我为TableAdapter选择了正确的名称,一切都很完美。