[英]Display Json on Gridview inside A Gridview
我有一個 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.