2010-01-20 312 views
1

以下代码尝试从datagridview中删除选定的行并更新数据库。CommandText属性尚未初始化

但它不更新数据库......它只是发出错误,“CommandText属性尚未初始化”。 ...有任何想法吗?我认为这是因为它一开始并没有受到束缚,但在这一点上我很无能,而且我的头很疼。

private void deleteRow() 
{ 
    DialogResult dr = MessageBox.Show("Are you sure you want to delete this row?", "Confirmation", 
    MessageBoxButtons.YesNo, MessageBoxIcon.Question); 

    if (dr == DialogResult.Yes) 
    { 
     while (dataGridView1.SelectedRows.Count > 0) 
     dataGridView1.Rows.Remove(dataGridView1.SelectedRows[0]);     

     try 
     { 
      this.Validate(); 
      this.tradesBindingSource.EndEdit(); 
      this.tradesTableAdapter.Update(this.tradesDataSet.Trades); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("An error occurred during the update process: " + ex); 
      // Add code to handle error here. 
     } 

     this.tradesTableAdapter.Fill(this.tradesDataSet.Trades); // refresh table 
    } 
} 
+0

根本原因可能在于您的Connection和SqlCommand实例化和配置的代码之外。你可以将这些发布到你的问题中吗? – 2010-01-20 04:33:11

+0

我不使用任何SQL命令...只是数据集和tableadapter ... – Woody 2010-01-20 04:45:22

+3

您的数据适配器中的更新命令未设置。所以它不知道如何更新。它是自动生成的,但有时候设计师可能会搞砸并从设计器代码文件中删除它。 – affan 2010-01-20 04:48:54

回答

0

我删除了我的表适配器,数据集,等...并重新创建整个表。用新数据填充它,并尝试删除一行。它的工作......不知道为什么,但它现在起作用。

+1

它的工作原理是,您现在有一个分配给DataAdapter的UpdateCommand属性的命令。 – AMissico 2010-03-02 13:23:24

+0

是的,在DataSet设计器中,单击FillBy查询并查看属性窗口。您应该看到选择,更新,插入和删除查询的地方。它可以自动填充这些内容,并且在大多数情况下它很好,但请注意! – cjb110 2013-02-13 08:11:28

相关问题