簡體   English   中英

在 Gridview 內顯示 Json Gridview

[英]Display Json on Gridview inside A Gridview

我有一個 Json,如下圖:

json

我想在 gridview 內的 gridview 中顯示“專業”

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>

代碼:

    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;

烏建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; }
    }
}

從上面的代碼中,我沒有設法在 gridview 中的 gridview 上顯示它(檢索到的數據只是最后一個數據,並重復顯示,如下所示)。

網格視圖

如何處理?

根據您的設計,您需要嵌套列表數據結構, majorGridView可以直接訪問majordatasource的majordatasource 屬性。 請將 majordatasource 傳遞給ujian.majordatasource ,但不要訪問頁面 class 中的單獨的 majordatasource 屬性。

例如

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

Xaml

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM