从JSON下载多个文件

时间:2016-06-15 03:11:33

标签: c# json gridview download uwp

我让aplkasi报摊在gridview上显示“judul”,“cover”和“harga”(数据取自json下面) JSON

gridview上的示例数据显示: Gridview Sample Selected Gridview

选择

gridview,然后单击下载按钮,它将下载所有驻留在json上方(红色圆圈内)的数据包中的数据。但是,我有一个问题,即:捆绑中的数据只能下载最新的数据,而以前的数据没有下载..

这是Project

如何处理?

注意:

  • JSON link
  • 使用syncfusion的轮播模块的库的外观
  • 在页面主页面上显示我使用Callisto模块的自定义对话框

2 个答案:

答案 0 :(得分:1)

这完全取决于你如何解析JSON中的数据并将其绑定到GridView 正如我想的那样,你应该有一些带有子类的类,如:

    public class BundleGroup : ObservableCollection<BundleData>
{
    public BundleGroup(IEnumerable<BundleData> items) : base(items)
    {
    }

    public string idfile { get; set; }
    public string judul { get; set; }
    //  etc.
}

在这种情况下,点击“下载”后,您就可以在BundleGroup中循环收集项目并下载所有项目。

答案 1 :(得分:1)

对您的示例进行了测试,我认为您的StoreAll()方法中的代码存在问题:

if (bundleObj.ValueType == JsonValueType.Array)
{
    JsonArray bundle = bundleObj.GetArray();
    foreach (JsonValue groupValue1 in bundle)
    {
        JsonObject groupObject1 = groupValue1.GetObject();

        bundleName = groupObject1["bundle_file"].GetString();
        pathFile = groupObject1["path_file"].GetString();
    }
}

然后:

file.BundleName = bundleName;

if (file.Tipe == "0")
{
    file.BundlePath = pathFile + bundleName + ".pdf";
}
else if (file.Tipe == "1")
{
    file.BundlePath = pathFile + bundleName;
}
if (licenseInformation.ProductLicenses[file.SKU].IsActive)
{
    file.Harga = "Purchased";
}

我可以理解您要在BundleName的每个项目中存储BundlePathGridView信息以便下载,但是您的BundleName和{{1}是BundlePath类中定义的所有字符串类型:

BukuAudio

因此,当您浏览public string BundleName { get; set; } public string BundlePath { get; set; } 组时,最新的捆绑包将覆盖前一个捆绑包,这就是您只能下载最新捆绑包文件的原因。

我认为您可以更改bundleBundleName的类型,例如:

BundlePath

然后像这样走过public List<string> BundleName { get; set; } public List<string> BundlePath { get; set; } 群:

bundle

但是在这样做之后,您还需要修改“下载”部分代码的代码,也可以修改样本中显示下载信息代码等其他部分。

此处我不会在file.BundleName = new List<string>(); file.BundlePath = new List<string>(); if (bundleObj.ValueType == JsonValueType.Array) { JsonArray bundle = bundleObj.GetArray(); foreach (JsonValue groupValue1 in bundle) { JsonObject groupObject1 = groupValue1.GetObject(); bundleName = groupObject1["bundle_file"].GetString(); pathFile = groupObject1["path_file"].GetString(); file.BundleName.Add(bundleName); file.Tipe = tipe; if (file.Tipe == "0") { file.BundlePath.Add(pathFile + bundleName + ".pdf"); //file.BundlePath = pathFile + bundleName + ".pdf"; } else if (file.Tipe == "1") { file.BundlePath.Add(pathFile + bundleName); //file.BundlePath = pathFile + bundleName; } } } 方法和ItemView_ItemClick方法中发布已修改的代码,因为它们不是此处的关键点,我修改了{{1}中的downloadClicked事件像这样下载:

OnNavigatedTo

现在,您可以在单击一个项目后下载每个包。