Удаление выбранного элемента из списка в xamarin (с использованием БД SQLite) - PullRequest
0 голосов
/ 21 марта 2020

Я хочу удалить одну выбранную строку, я не думаю, что мой код далеко. В настоящее время он удаляет все строки в списке, сохраненные в БД SQLite, что отлично подходит для кнопки удаления всех, но я этого не хочу. Ниже мой код:

 void SaveButton_Clicked(object sender, System.EventArgs e)
    {
        MainWindowViewModel APR = new MainWindowViewModel()
        {
            ProductName = proName.Text,
            TotalAPR = totAPR.Text,
            Total = tot.Text,
            Monthly = mon.Text
        };

            using (SQLiteConnection conn = new SQLiteConnection(App.FilePath))
        {
            conn.CreateTable<MainWindowViewModel>();
            int rowsAdded = conn.Insert(APR);
        }

        DisplayAlert("Saved!", "Your APR has been saved!", "OK");

        BindingContext = new MainWindowViewModel();

        OnAppearing();
    }


    void RemoveButton_Clicked(object sender, System.EventArgs e)
    {
        MainWindowViewModel APR = new MainWindowViewModel()
        {
            ProductName = proName.Text,
            TotalAPR = totAPR.Text,
            Total = tot.Text,
            Monthly = mon.Text
        };

        using (SQLiteConnection conn = new SQLiteConnection(App.FilePath))
        {
            conn.DeleteAll<MainWindowViewModel>();
            int rowsDeleted = conn.Delete(APR);
        }

        DisplayAlert("Deleted!", "This saved APR has been deleted!", "OK");

        BindingContext = new MainWindowViewModel();

        OnAppearing();
    }



    protected override void OnAppearing()
    {
        base.OnAppearing();
        using (SQLiteConnection conn = new SQLiteConnection(App.FilePath))
        {
            conn.CreateTable<MainWindowViewModel>();
            var APRS = conn.Table<MainWindowViewModel>().ToList();

            APRListView.ItemsSource = APRS;


        }
    }

Я также пытался:

using (SQLiteConnection conn = new SQLiteConnection(App.FilePath))
        {
            conn.Delete<MainWindowViewModel>();
            int rowsDeleted = conn.Delete(APR);
        }

Но мне говорят, чтобы изменить его на conn.DeleteALL согласно Intellisense.

1 Ответ

1 голос
/ 21 марта 2020
// you do not need to create a new instance of your VM
var item = (MainWindowViewModel)APRListView.SelectedItem;

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