database - 通过单击按钮从数据库中删除
问题描述
我正在使用 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>
解决方案
我将如何通过单击删除按钮来删除数据库中的特定位置?
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>
方法OnDeleteClicked
在TestPage.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/ 。
推荐阅读
- c - 函数 strtoul 不读取完整的字符串
- arrays - swift array.firstIndex(where: ...) 索引超出范围...但是为什么呢?
- java - 我有私钥的内容。我想使用 SSH 身份验证 SFTP 文件
- python - 熊猫不识别 np.nan 值吗?
- java - 为什么我不能向 HashMap (Java) 添加元素
- leaflet - geoman - 如何在removingMode中删除功能后访问生成的GeoJSON对象
- javascript - JavaScript,在数组比较中更具体
- docker - Docker compose 仅为一项服务安装卷
- c# - 为什么我不能使用最新的 .NET 5 和 NetAnalyzers 抑制 CA 违规?
- user-interface - 列出包的面板和包含我的数据集的面板是不可见的