如何在Xamarin表单的文本字段中显示数据库中注册的数据以进行更新
我想如何在Xamarin表单的文本字段中显示数据库中注册的数据以进行更新,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我想更新/编辑我的Xamarin表单应用程序中的播放器详细信息。玩家登录到应用程序后,点击配置文件图像应导航至玩家详细信息(Register.xaml)屏幕,并从数据库填充player Details)。如何在文本字段中显示数据 //Register.xaml: <ContentPage.Content> <StackLayout Spacing="20" Padding="20"> <Label Tex
更新/编辑我的Xamarin表单应用程序中的播放器详细信息。玩家登录到应用程序后,点击配置文件图像应导航至玩家详细信息(Register.xaml
)屏幕,并从数据库填充player Details
)。如何在文本字段中显示数据
//Register.xaml:
<ContentPage.Content>
<StackLayout Spacing="20" Padding="20">
<Label Text="Player Details" HorizontalOptions="Center" VerticalOptions="CenterAndExpand" FontSize="25"></Label>
<Entry x:Name="fullNameEntry" Placeholder="Full Name" Text="{Binding FullName}"></Entry>
<Entry x:Name="mobileEntry" Placeholder="Mobile" Text="{Binding Mobile}"></Entry>
<Entry x:Name="soccerpostionEntry" Placeholder="Soccer Position" Text="{Binding SoccerPosition}"></Entry>
<Button Text="Register" Clicked="RegisterSave_OnClicked" TextColor="White" BackgroundColor="ForestGreen"></Button>
</StackLayout>
</ContentPage.Content>
PlayerDetails模型类:
string fullname;
string mobile;
string soccerposition;
public PlayerDetails()
{
}
public string FullName
{
set
{
if (fullname != value)
{
fullname = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("FullName"));
}
}
}
get
{
return fullname;
}
}
public string Mobile
{
set
{
if (mobile != value)
{
mobile = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("Mobile"));
}
}
}
get
{
return mobile;
}
}
public string SoccerPosition
{
set
{
if (soccerposition != value)
{
soccerposition = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("SoccerPosition"));
}
}
}
get
{
return soccerposition;
}
}
解决方案:
当您按下“注册”页面时,您应该传递模型
在注册页面中,在构造函数中添加PlayerDetails
参数,并将BindingContext
设置到模型:
public partial class Register : ContentPage
{
PlayerDetails myDetails;
public Register(PlayerDetails playD)
{
InitializeComponent ();
myDetails = playD;
BindingContext = myDetails;
}
}
当你推的时候,通过模型:
private async void OnProfilePicClicked(object sender, EventArgs e)
{
//Navigate to Register screen with player data loaded:
var emailText = emailEntry.Text;
List<PlayerDetails> details = (from x in conn.Table<PlayerDetails>() where x.Email == emailText select x).ToList();
if (details != null)
{
// found the record
PlayerDetails playerDetails = new PlayerDetails();
playerDetails.FullName = details[0].FullName;
playerDetails.Mobile = details[0].Mobile;
playerDetails.SoccerPosition = details[0].SoccerPosition;
await Navigation.PushAsync(new Register(playerDetails) { });
}
else {
Console.WriteLine("Can't find the playerDetails");
}
}
private async void OnProfilePicClicked(对象发送方,事件参数e)
{
//导航至已加载播放器数据的注册屏幕:
var emailText=emailEntry.Text;
列表详细信息=(从conn.Table()中的x开始,其中x.Email==emailText选择x.ToList();
如果(详细信息!=null)
{
//找到记录了吗
PlayerDetails PlayerDetails=新的PlayerDetails();
playerDetails.FullName=详细信息[0]。FullName;
playerDetails.Mobile=详细信息[0].Mobile;
playerDetails.SoccerPosition=详细信息[0]。SoccerPosition;
wait Navigation.PushAsync(新寄存器(playerDetails){});
}
否则{
Console.WriteLine(“找不到播放器详细信息”);
}
}
通常,您会将数据加载到模型中,并将其绑定到页面上的控件。关于如何做到这一点,有很多文章和示例应用程序。你具体不明白什么?将特定玩家的数据传递到新页面并显示它。我正在努力从数据库中获取特定玩家的数据并传递回模型视图。对不起,我对Xamarin表单很陌生。。我可以通过玩家电子邮件获取数据吗?“我可以通过电子邮件获取玩家数据吗?”-你的意思是你可以通过他们的电子邮件地址在数据库中查找玩家吗?可能吧-但是您还没有向我们展示您的数据模型或数据库的任何相关代码。首先,在执行db查询之前,您正在推送新页面。其次,您实际上没有向新页面传递任何数据@JackHua MSFT下面的答案解决了这两个问题。太棒了,这正在起作用,我们是否可以在导航到PlayerDetails后,将注册
按钮上的标签更改为更新
?@soccerway当然可以,像在标签上一样绑定按钮的文本。Hua。。。你能帮我解决这个问题吗。所有我需要显示的数据SoccerDailyStatus.xaml..但现在屏幕闪烁异常…华,我用另一种方式解决了这个问题,非常感谢与我再次检查
private async void OnProfilePicClicked(object sender, EventArgs e)
{
//Navigate to Register screen with player data loaded:
var emailText = emailEntry.Text;
List<PlayerDetails> details = (from x in conn.Table<PlayerDetails>() where x.Email == emailText select x).ToList();
if (details != null)
{
// found the record
PlayerDetails playerDetails = new PlayerDetails();
playerDetails.FullName = details[0].FullName;
playerDetails.Mobile = details[0].Mobile;
playerDetails.SoccerPosition = details[0].SoccerPosition;
await Navigation.PushAsync(new Register(playerDetails) { });
}
else {
Console.WriteLine("Can't find the playerDetails");
}
}