Свойство CommandText не было инициализировано

Следующий код пытается удалить выбранную строку из datagridview и обновить базу данных.

Но он не обновляет базу данных... он просто выдает ошибку "Свойство 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
    }
}

person Woody    schedule 20.01.2010    source источник
comment
Основная причина, вероятно, лежит за пределами этого кода, где создаются и настраиваются экземпляры Connection и SqlCommand. Можете ли вы опубликовать их в своем вопросе?   -  person o.k.w    schedule 20.01.2010
comment
Я не использую никаких команд SQL... только набор данных и адаптер таблицы...   -  person Woody    schedule 20.01.2010
comment
Ваша команда обновления в адаптере данных не установлена. Так что не знает как обновляться. Он генерируется автоматически, но иногда дизайнер может напортачить и удалить его из файла кода дизайнера.   -  person particle    schedule 20.01.2010
comment
Я думаю ты прав. Я выполнил поиск в своем коде дизайнера, и обновления нигде не было найдено. Должен ли я помещать где-нибудь в свой код дизайнера следующее? this.tradesTableAdapter.Update   -  person Woody    schedule 20.01.2010


Ответы (1)


Я удалил свои адаптеры таблиц, наборы данных и т. д. и воссоздал всю таблицу. Заполнил его новыми данными и попытался удалить строку. Это сработало... Не знаю почему, но теперь это работает.

person Woody    schedule 20.01.2010
comment
Это работает, потому что теперь у вас есть команда, назначенная свойству UpdateCommand DataAdapter. - person AMissico; 02.03.2010
comment
да, в дизайнере набора данных щелкните запрос FillBy и посмотрите на окно свойств. Вы должны увидеть места для запросов Select, Update, Insert и Delete. Он может автоматически заполнять их, и в большинстве случаев это нормально, но имейте в виду! - person cjb110; 13.02.2013