Как создать кнопку «Обновить» для datagridview в С#?

Моя проблема в том, что когда я создаю кнопку, которая обновляет сетку данных при нажатии на новый аукцион или аукцион удаления, вообще ничего не происходит или даже появляется какая-то синтаксическая ошибка. Итак, мне нужно:

Кнопка «Обновить», которую я сделал через XAML. Поэтому, когда нажата кнопка удаления, мне нужно удалить строку, которую я тоже сделал. Но мое обновление не работает. Мне нужно выйти из приложения и войти снова, чтобы внести некоторые изменения. Я действительно не знаю, как это сделать.

Ниже я приведу несколько изображений, а также некоторый код.

Вход по умолчанию: Как создать кнопку «Обновить» для datagridview в С#?

Добавление продажи или удаление продажи, а затем выход из системы и повторный вход: Как создать кнопку «Обновить» для datagridview в С#?

Я попытался создать сетку данных, которая автоматически обновляется. Я пытался сделать эту кнопку, у меня было несколько синтаксических ошибок, я также пробовал добавлять dgGridView.Items.Refresh(), тоже не помогло.

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            BindDataGrid();
        }


        private void BindDataGrid()
        {

            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnString"].ToString();
            conn.Open();

            SqlCommand comm = new SqlCommand("SELECT * FROM AuctionTbl2", conn);
            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter(comm);
            da.Fill(ds);
            dgGrid.ItemsSource = ds.Tables[0].DefaultView;
            dgGrid.Items.Refresh();

        }

        private void LogoutBtn_Click(object sender, RoutedEventArgs e)
        {
            MainWindowGuest mwg = new MainWindowGuest();
            mwg.Show();
            this.Close();
            MessageBox.Show("You have been logged out.");
        }

        private void DeleteBtn_Click(object sender, RoutedEventArgs e)
        {
            try
            {

                SqlConnection conn = new SqlConnection();
                conn.ConnectionString = 
              ConfigurationManager.ConnectionStrings["ConnString"].ToString();
                conn.Open();

                string query = "delete from AuctionTbl2";
                SqlCommand comm = new SqlCommand(query, conn);
                comm.ExecuteNonQuery();

                MessageBox.Show("Deleted");

                conn.Close();

            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void AddNew_Click(object sender, RoutedEventArgs e)
        {
            NewDeleteWindow newDeleteWindow = new NewDeleteWindow();
            newDeleteWindow.DataContext = new NewSaveButton();
            newDeleteWindow.ShowDialog();

        }
    }

}

Я ожидаю сделать обновление, когда продажа будет добавлена ​​или удалена, с кнопкой обновления или без нее, не имеет значения. Просто, чтобы обновить эту сетку. Спасибо вам всем.

stackoverflow.com/questions/21299016/…
Dortimer 09.04.2019 17:40

что ты удаляешь? «удалить из tblAuction» запись не будет удалена.

Zain Arshad 09.04.2019 17:41

Где код кнопки "Обновить"?

Zain Arshad 09.04.2019 17:42

@ZainArshad Я новичок, я не так много знаю. Я пытаюсь поэкспериментировать с этим. Каким-то образом удаляет. Когда я нажимаю кнопку "удалить", он как-то удаляет его из базы данных, я не знаю, что я должен получить? Кстати, я удалил кнопку «Обновить», я думал, что это все равно мне не поможет.

xVenum.dll 09.04.2019 17:44

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

Ňɏssa Pøngjǣrdenlarp 09.04.2019 17:47

Запустите мой код, он работает?

Zain Arshad 09.04.2019 17:49

Если вы не придерживаетесь MVVM или привязки данных, вам нужно будет вручную обновлять сетку при изменении ее данных. Позвоните вам, чтобы обновить код после операции CRUD

Cleptus 09.04.2019 17:54
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
273
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы должны обновить table так же, как вы обновляете t при загрузке form. Замените эти методы в своем коде:

private void DeleteBtn_Click(object sender, RoutedEventArgs e)
{
    try
    {
        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = 
        ConfigurationManager.ConnectionStrings["ConnString"].ToString();
        conn.Open();

        string query = "delete from AuctionTbl2";  // i think you are not aaully deleting the record you want to delete
        SqlCommand comm = new SqlCommand(query, conn);
        comm.ExecuteNonQuery();
        MessageBox.Show("Deleted");
        conn.Close();
        BindDataGrid();
    }
    catch(Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

 private void AddNew_Click(object sender, RoutedEventArgs e)
{
    NewDeleteWindow newDeleteWindow = new NewDeleteWindow();
    newDeleteWindow.DataContext = new NewSaveButton();
    newDeleteWindow.ShowDialog();
    BindDataGrid();
}

Обновлено: Чтобы удалить sale, на который вы нажали, выполните следующие действия:

  • сделайте global variable "int IDdelete".
  • Перейти к Designer.cs.
  • Нажмите на dataGridView.
  • Вы увидите Properties справа.
  • нажмите на events.
  • Прокрутите и найдите CellClick и дважды щелкните по нему.
  • Это создаст метод с таким именем private void dgGrid_CellClick(object sender, DataGridViewCellEventArgs e)
  • Теперь вставьте код ниже в этот метод.
private void dgGrid_CellClick(object sender, DataGridViewCellEventArgs e)
{
   IDdelete = Convert.InTo32(dgGrid.Rows[e.RowIndex].Cells[0].Value);
}

Now, in your `SQL query` use this query.

   "DELETE from AuctionTbl2 where id=@IDelete";

Да, чувак, это работает. Хотя бы для добавления. Когда я выбираю одну строку и удаляю ее, она удаляет все строки?

xVenum.dll 09.04.2019 17:50

Что это за удаление всех записей? Это то, что я упоминаю в комментарии в коде

Zain Arshad 09.04.2019 17:50

вам нужно внести некоторые изменения, получить Id выбранной строки, а затем использовать предложение Where

Zain Arshad 09.04.2019 17:52

Я включил предложение where для идентификатора следующим образом: «удалить из AuctionTbl2, где id=@Id». Там написано, что мне нужно объявить скалярную переменную? Извините, ребята, я действительно не знаю, я ценю время, которое вы тратите на объяснение мне.

xVenum.dll 09.04.2019 18:00

Видите ли, вам нужно создать переменную IDdelete и сделать event, чтобы при нажатии на запись ID записи сохранялись в переменной IDdelete и передавались IDdelete в предложение `where. Вы поняли ?

Zain Arshad 09.04.2019 18:03

@ZainArshad Вы имеете в виду, что мне нужно частное поле для идентификатора, свойства и конструктора? Еще один вопрос. Что лучше начать новый проект или попытаться исправить этот?

xVenum.dll 09.04.2019 18:09

Подождите, я обновляю свой ответ, следуйте этим инструкциям, и вы получите то, что хотите. Если это поможет вам, отметьте его как «ответ» и «проголосуйте»... подождите минутку :)

Zain Arshad 09.04.2019 18:11

@ZainArshad Я вижу только CellEditEnding? Я использую приложение WPF.

xVenum.dll 09.04.2019 18:30

Давайте продолжить обсуждение в чате.

xVenum.dll 09.04.2019 18:32

Попробуйте это после блоков Add и delete.

DataTable dt = dal.select();
dgGrid.DataSource = dt;

Если не получится, отправьте пинг на скайп: vipinweb2

Другие вопросы по теме