简体   繁体   English

在 Gridview 内显示 Json Gridview

[英]Display Json on Gridview inside A Gridview

I have a Json, like the image below:我有一个 Json,如下图:

json

I want to display "majors" into a gridview inside a gridview我想在 gridview 内的 gridview 中显示“专业”

XAML: XAML:

<GridView x:Name="asesmenGridView">
    <GridView.ItemTemplate>
        <DataTemplate>
            <Grid x:Name="asesmenGrid"> 
                <TextBlock  
                    x:Name="judulT"
                    Text="{Binding Title}"/>
                <GridView
                    x:Name="majorGridView"
                                        ItemsSource="{Binding DataContext.majordatasource, ElementName=asesmenGridView}">
                        <GridView.ItemTemplate>
                                                    <DataTemplate x:DataType="local:MajorClass">
                                <Grid>
                                                                        <TextBlock
                                                                            x:Name="kelasT"
                                                                            Text="{x:Bind Major}"  />
                                                                </Grid>
                            </DataTemplate>
                                                    </GridView.ItemTemplate>
                                                </GridView>
        </DataTemplate>
    </GridView.ItemTemplate>
</GridView>

Code:代码:

    public MainPage()
                {
                    this.InitializeComponent();
                this.DataContext = this;
                }
        public List<MajorClass> majordatasource { get; set; } = new List<MajorClass>();    
        string urlPath = "https://.../choose-exam/2";
                                    var httpClient = new HttpClient(new HttpClientHandler());
                                    httpClient.DefaultRequestHeaders.Add("Authorization",
                                        string.Format("Bearer {0}", tkn));
                                    var response = await httpClient.GetAsync(urlPath);
             string jsonText = await response.Content.ReadAsStringAsync();
                                    try
                                    {
                                        JsonArray jsonArray = JsonArray.Parse(jsonText);
                                        foreach (JsonValue groupValue in jsonArray)
                                        {
                                            string title = groupObject["title"].GetString();
             JsonArray majorArray = groupObject["majors"].GetArray();
                                            MajorClass majorC = new MajorClass();
                                            foreach (JsonValue majorValue in majorArray)
                                            {
                                                JsonObject majorObject = majorValue.GetObject();
                                                double majorID = majorObject["major_id"].GetNumber();
                                                string major = majorObject["major"].GetString();
            
                                                majorC.MajorID = (int)majorID;
                                                majorC.Major = major + ",";
                                                majordatasource.Add(majorC);
                                            }
Ujian ujian = new Ujian();
                                    ujian.Title = title;
             ujiandatasource.Add(ujian);
            }
            asesmenGridView.ItemsSource = ujiandatasource;

Ujian Class:乌建Class:

public class Ujian
    {
        public string Title { get; set; }
        public ObservableCollection<MajorClass> majordatasource { get; set; }

        public Ujian()
        {
            Title = string.Empty;
            majordatasource = new ObservableCollection<MajorClass>();
        }

        public Ujian(string title)
        {
            Title = title;
        }
    }

    public class MajorClass
    {
        public int MajorID { get; set; }
        public string Major { get; set; }
    }
}

From the code above, I didn't manage to display it on the gridview in a gridview (the data that is retrieved is only the last data and is displayed repeatedly, as shown below).从上面的代码中,我没有设法在 gridview 中的 gridview 上显示它(检索到的数据只是最后一个数据,并重复显示,如下所示)。

网格视图

How to handle it?如何处理?

Base on your design, you need nest list data structure, and majorGridView could access majordatasource property of Ujian directly.根据您的设计,您需要嵌套列表数据结构, majorGridView可以直接访问majordatasource的majordatasource 属性。 Please pass majordatasource to ujian.majordatasource , but not access separate majordatasource property where in the page class.请将 majordatasource 传递给ujian.majordatasource ,但不要访问页面 class 中的单独的 majordatasource 属性。

For example例如

Ujian ujian = new Ujian();
ujian.Title = title;
ujian.majordatasource = majordatasource;
ujiandatasource.Add(ujian)

Xaml Xaml

<GridView
 x:Name="majorGridView"
 ItemsSource="{Binding majordatasource}">

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM