首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将数据从主页上的web api传递到xamarin表单中的详细页

将数据从主页上的web api传递到xamarin表单中的详细页
EN

Stack Overflow用户
提问于 2019-08-26 15:49:38
回答 2查看 76关注 0票数 1

下面是我的代码在包含数据的页面中的样子:

代码语言:javascript
运行
复制
private async Task GetLeaveBalance() {
    try
    {
        Uri = "http://192.168.42.35/API/api/leave/getbalance/"+ empId + "/"+ companyId;
        client = new HttpClient();

        var authHeaderValue = basic;
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authHeaderValue);

        HttpResponseMessage response = await client.GetAsync(Uri);
        response.EnsureSuccessStatusCode();
        string responseBody = await response.Content.ReadAsStringAsync();

        if (response.IsSuccessStatusCode)
        {
            var emp = JsonConvert.DeserializeObject<List<Leave>>(responseBody);
            dataGrid.ItemsSource = emp;
            UserDialogs.Instance.HideLoading();
        }
    }
    catch (HttpRequestException e)
    {
        Console.WriteLine("\nException Caught!");
        Console.WriteLine("Message :{0} ", e.Message);
        UserDialogs.Instance.ShowError(e.Message);
    }
}

private void Button_Clicked(object sender, EventArgs e)
{
    Navigation.PushAsync(new Details());
}

我的第二个页面(Details Page)有一个选择器,它需要填充我从emp变量获得的数据,那么如何将数据从第一个页面传递到第二个页面(Details Page)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-26 22:21:06

你也可以通过MessagingCenter,下面是一些步骤。

首先,在SecondPage中注册一个消息中心任务。

代码语言:javascript
运行
复制
MessagingCenter.Subscribe<SecondPage(you can create a empty interface if you want to use as type),string>(this, "PopulateSecondPage", (sender,DataFromMainPage) =>
            {
                //your code to handle DataFromMainPage
            });

然后使用以下命令传递数据:

代码语言:javascript
运行
复制
    var page = new SecondPage();

    Navigation.PushAsync(page);

   MessagingCenter.Send<MainPage>(page, "PopulateSecondPage","Data you want to pass");
票数 1
EN

Stack Overflow用户

发布于 2019-08-26 17:09:57

考虑到您的方法和代码,您可以直接将数据传递给第二个页面的构造函数

代码语言:javascript
运行
复制
List<Leave> leaves = new List<Leave>();

private async Task GetLeaveBalance() {
    ...
    leaves = JsonConvert.DeserializeObject<List<Leave>>(responseBody);
    ...
}

private void Button_Clicked(object sender, EventArgs e)
{
    Navigation.PushAsync(new Details(leaves));
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57653775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档