首页 > 解决方案 > 通过单击按钮从数据库中删除

问题描述

我正在使用 SqlLite 数据库创建一个应用程序。我可以使用注册页面中的一些基本信息填充数据库,并在“登录”选项卡下仅显示该人的 ID(这目前用于测试目的)。我将如何通过单击删除按钮来删除数据库中的特定位置?这是我连接到我的数据库并使用它在列表视图下的页面上仅显示 Id 的 cs。

namespace SP
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class LoginPage : ContentPage
    {
        public LoginPage()
        {
            InitializeComponent();
        }

        protected override void OnAppearing()
        {
            base.OnAppearing();

            using (SQLite.SQLiteConnection conn = new SQLite.SQLiteConnection(App.FilePath))
            {
                conn.CreateTable<SignInInformation>();
                var info = conn.Table<SignInInformation>().ToList();

                userData.ItemsSource = info;
            }
        }

        void DeleteButton_Clicked(object sender, EventArgs e)
        {
            
        }
    }
}
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="SP.LoginPage">
    <ContentPage.ToolbarItems>
        <ToolbarItem x:Name="DeleteButton"
                     Text="Delete"
                     Clicked="DeleteButton_Clicked">
        </ToolbarItem>
    </ContentPage.ToolbarItems>
    
    
    <ContentPage.Content>
        <ListView x:Name="userData">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <TextCell Text="{Binding Id}"/>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </ContentPage.Content>
</ContentPage>

标签: databasesqlitexamarin.forms

解决方案


我将如何通过单击删除按钮来删除数据库中的特定位置?

Yu 可以使用Xamarin.Forms MenuItem来实现此功能。

Xamarin.FormsMenuItem类为菜单定义菜单项,例如ListView项上下文菜单和 Shell 应用程序flyout菜单。

您可以参考以下代码:

<ListView x:Name="listView" Margin="20" ItemSelected="OnListItemSelected">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <StackLayout Margin="20,0,0,0" Orientation="Horizontal" HorizontalOptions="FillAndExpand">
                    <Label Text="{Binding Name}" VerticalTextAlignment="Center" HorizontalOptions="StartAndExpand" />
                    <Image Source="check.png" HorizontalOptions="End" IsVisible="{Binding Done}" />
                </StackLayout>

                <ViewCell.ContextActions>
                    <MenuItem Text="Delete"
                                  Clicked="OnDeleteClicked"/>
                </ViewCell.ContextActions>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

方法OnDeleteClickedTestPage.xaml.cs

    async void OnDeleteClicked(object sender, EventArgs e)
    {
        TodoItem itemToDelete = ((sender as MenuItem).BindingContext as TodoItem);

        TodoItemDatabase database = await TodoItemDatabase.Instance;
        await database.DeleteItemAsync(itemToDelete);
    }

有关更多详细信息,请查看:https ://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/menuitem 。

上面的文档中还包含一个示例,您可以在此处查看: https ://docs.microsoft.com/en-us/samples/xamarin/xamarin-forms-samples/userinterface-menuitemdemos/ 。


推荐阅读