Как создать кнопку «Обновить» для просмотра данных в C #? - PullRequest
0 голосов
/ 09 апреля 2019

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

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

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

Вход по умолчанию: 1

Добавление продажи или удаление продажи, затем выход из системы и повторный вход в систему: 2

Я попытался создать сетку данных, которая будет автоматически обновляться.Я попытался сделать эту кнопку, я получил несколько синтаксических ошибок, я также попытался добавить 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();

        }
    }

}

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

Ответы [ 2 ]

1 голос
/ 09 апреля 2019

Вы должны обновить 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";
0 голосов
/ 09 апреля 2019

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

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

Если не решить, пинг мне на Skype: vipinweb2

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