如何使用dataset,tablemanager和bindingsource更新数据库?

时间:2012-03-05 17:39:20

标签: winforms dataset

这是一个非常小的程序,所以我只是将自动生成的代码用于我的数据源,并在我的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”更新该行,将数据保存到各处(包括数据库),然后关闭表单(以返回父表单)。

1 个答案:

答案 0 :(得分:0)

出于某种原因,我的tableAdapterManager没有链接到该表单上的TableAdapter - 一旦我链接它们,上面的代码工作正常。

更准确地说,我点击了表单的设计视图,然后单击设计窗口底部的tableAdapterManager。然后查看“属性”窗口,我注意到TableAdapter是空白的(如果您使用向导创建DataSource,那么它将被命名为与DataSource中的表相同)。一旦我为TableAdapter选择了正确的名称,一切都很完美。