Как обновить / обновить DataGridView в приложении после добавления записи в единственную таблицу БД - PullRequest
0 голосов
/ 29 марта 2011

Код для кнопки добавления:

        private void addRecord()
        {
            int copies;
            if (txtBookCode.Text != "" && txtBookTitle.Text != "" && txtBookCategory.Text != "" && txtBookCopies.Text != "")
            {
                if (int.TryParse(txtBookCopies.Text, out copies))
                {
                    //DataRow row = booksDataset1.Tables["Books"].NewRow();

                    //row[1] = txtBookTitle.Text;
                    //row[2] = txtBookCategory.Text;
                    //row[3] = copies;
                    //row[4] = txtBookCode.Text;

                    //booksDataset1.Tables["Books"].Rows.Add(row);

                    //sqlDataAdapter1.Update(booksDataset1, "Books");

                    SqlCommand addRecord = new SqlCommand();
                    addRecord.Connection = BooksConnection;
                    addRecord.CommandType = CommandType.Text;
                    addRecord.CommandText =
                        "INSERT INTO Books VALUES (@BookCode, @BookTitle, @BookCategory, @BookCopies)";

                    SqlParameter BookCodeParameter = new SqlParameter();
                    BookCodeParameter.ParameterName = "@BookCode";
                    BookCodeParameter.SqlDbType = SqlDbType.Int;
                    BookCodeParameter.IsNullable = true;
                    BookCodeParameter.Value = txtBookCode.Text;

                    SqlParameter BookTitleParameter = new SqlParameter();
                    BookTitleParameter.ParameterName = "@BookTitle";
                    BookTitleParameter.SqlDbType = SqlDbType.NVarChar;
                    BookTitleParameter.IsNullable = true;
                    BookTitleParameter.Value = txtBookTitle.Text;

                    SqlParameter BookCategoryParameter = new SqlParameter();
                    BookCategoryParameter.ParameterName = "@BookCategory";
                    BookCategoryParameter.SqlDbType = SqlDbType.NVarChar;
                    BookCategoryParameter.IsNullable = true;
                    BookCategoryParameter.Value = txtBookCategory.Text;

                    SqlParameter BookCopiesParameter = new SqlParameter();
                    BookCopiesParameter.ParameterName = "@BookCopies";
                    BookCopiesParameter.SqlDbType = SqlDbType.Int;
                    BookCopiesParameter.IsNullable = true;
                    BookCopiesParameter.Value = txtBookCopies.Text;

                    addRecord.Parameters.Add(BookCodeParameter);
                    addRecord.Parameters.Add(BookTitleParameter);
                    addRecord.Parameters.Add(BookCategoryParameter);
                    addRecord.Parameters.Add(BookCopiesParameter);

                    addRecord.Connection.Open();

                    addRecord.ExecuteNonQuery();

                    clearTextBoxes();
//guess attemp at refreshing the datagridview
                    BooksGrid.DataSource = null;

                    BooksGrid.DataSource = booksDataset1.Books;

                    sqlDataAdapter1.Fill(booksDataset1.Books);
                }
                else
                    MessageBox.Show("Please enter a number into \'Copies\' field");
            }
            else
            {
                MessageBox.Show("Please fill all of the fields");
            }

}

1 Ответ

0 голосов
/ 29 марта 2011

Я думаю, вы делаете это слишком рано. Попробуйте установить источник данных после того, как вы заполнили booksDataset1.Books. Вы связываетесь до того, как данные становятся доступны, и я не знаю, что это происходит, когда происходит событие изменения, которое заставит его обновиться.

Кроме того, вы можете вызвать yourDataGridview.Refresh (), чтобы вызвать проблему, если источник данных уже установлен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...