Моя проблема в том, что когда я создаю кнопку, которая обновляет сетку данных при нажатии на новый аукцион или аукцион удаления, вообще ничего не происходит или даже появляется какая-то синтаксическая ошибка. Итак, мне нужно:
Кнопка «Обновить», которую я сделал через XAML
.
Поэтому, когда нажата кнопка удаления, мне нужно удалить строку, которую я тоже сделал.
Но мое обновление не работает. Мне нужно выйти из приложения и войти снова, чтобы внести некоторые изменения. Я действительно не знаю, как это сделать.
Ниже я приведу несколько изображений, а также некоторый код.
Вход по умолчанию:
Добавление продажи или удаление продажи, а затем выход из системы и повторный вход:
Я попытался создать сетку данных, которая автоматически обновляется. Я пытался сделать эту кнопку, у меня было несколько синтаксических ошибок, я также пробовал добавлять 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();
}
}
}
Я ожидаю сделать обновление, когда продажа будет добавлена или удалена, с кнопкой обновления или без нее, не имеет значения. Просто, чтобы обновить эту сетку. Спасибо вам всем.
что ты удаляешь? «удалить из tblAuction» запись не будет удалена.
Где код кнопки "Обновить"?
@ZainArshad Я новичок, я не так много знаю. Я пытаюсь поэкспериментировать с этим. Каким-то образом удаляет. Когда я нажимаю кнопку "удалить", он как-то удаляет его из базы данных, я не знаю, что я должен получить? Кстати, я удалил кнопку «Обновить», я думал, что это все равно мне не поможет.
Обновите данные, источник данных или запрос, а не элемент управления. Но вы пропустили тряпки, указывающие на то, что технология когда-то очень помогала.
Запустите мой код, он работает?
Если вы не придерживаетесь MVVM или привязки данных, вам нужно будет вручную обновлять сетку при изменении ее данных. Позвоните вам, чтобы обновить код после операции CRUD
Вы должны обновить 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";
Да, чувак, это работает. Хотя бы для добавления. Когда я выбираю одну строку и удаляю ее, она удаляет все строки?
Что это за удаление всех записей? Это то, что я упоминаю в комментарии в коде
вам нужно внести некоторые изменения, получить Id
выбранной строки, а затем использовать предложение Where
Я включил предложение where для идентификатора следующим образом: «удалить из AuctionTbl2, где id=@Id». Там написано, что мне нужно объявить скалярную переменную? Извините, ребята, я действительно не знаю, я ценю время, которое вы тратите на объяснение мне.
Видите ли, вам нужно создать переменную IDdelete
и сделать event
, чтобы при нажатии на запись ID
записи сохранялись в переменной IDdelete
и передавались IDdelete
в предложение `where. Вы поняли ?
@ZainArshad Вы имеете в виду, что мне нужно частное поле для идентификатора, свойства и конструктора? Еще один вопрос. Что лучше начать новый проект или попытаться исправить этот?
Подождите, я обновляю свой ответ, следуйте этим инструкциям, и вы получите то, что хотите. Если это поможет вам, отметьте его как «ответ» и «проголосуйте»... подождите минутку :)
@ZainArshad Я вижу только CellEditEnding? Я использую приложение WPF.
Давайте продолжить обсуждение в чате.
Попробуйте это после блоков Add
и delete
.
DataTable dt = dal.select();
dgGrid.DataSource = dt;
Если не получится, отправьте пинг на скайп: vipinweb2