2017-10-01 18 views
0

HELP !!!SFchartにJSONデータが表示されません! Syncfusion

だから、私はしかし、それは文句を言わないのページに何も表示されいずれか、またはそれだけで、実際のデータを軸を表示しない、

  • ちょうど私のデータはsfchartに表示するために取得しようとして過ごした日と時間をアイブJSONデータをデシリアライズしてsfグラフにバインドします

グラフをXMLコードまたはC#コードで表示するタブを作成しましたが、どちらも動作しませんでした。 メインページの背後にあるあなたが

<?xml version="1.0" encoding="utf-8"?> 
<TabbedPage xmlns:chart="clr-namespace:Syncfusion.SfChart.XForms;assembly=Syncfusion.SfChart.XForms" xmlns:local="clr-namespace:Drip" xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Drip.DripPage"> 


    <ContentPage Title= "Data Log"> 
       <StackLayout> 
        <ListView x:Name="postsListView" HasUnevenRows="true" IsPullToRefreshEnabled="true" Refreshing='Handle_Refreshing'> 
         <ListView.Header> 
          <StackLayout Orientation= "Horizontal" Padding="20,10,0,10" BackgroundColor="#88CCF1"> 
           <Label Text="Entries" VerticalTextAlignment="Center" FontAttributes="Bold" TextColor="White"/> 
          <StackLayout HorizontalOptions="FillAndExpand"> 
           <Label Text="Litres Used " HorizontalTextAlignment="Center" FontAttributes="Bold" TextColor="White"/> 
          </StackLayout> 
           <Label Text="Date/Time " VerticalTextAlignment="Center" FontAttributes="Bold" TextColor="White"/> 
          </StackLayout> 
         </ListView.Header> 
        <ListView.ItemTemplate> 
         <DataTemplate > 
          <ViewCell> 
           <Grid> 
            <Grid.ColumnDefinitions> 
             <ColumnDefinition Width= "0.5*"/> 
             <ColumnDefinition Width="0.5*"/> 
             <ColumnDefinition Width="0.5*"/>        
            </Grid.ColumnDefinitions> 
           <Label Text="{Binding Entry_id}" VerticalTextAlignment="Center" /> 
           <Label Text="{Binding Field1}" Grid.Column="1" HorizontalTextAlignment="Center" VerticalTextAlignment="Center"/> 
           <Label Text="{Binding Created_at}" Grid.Column="2" HorizontalTextAlignment="End" VerticalTextAlignment="Center"/> 
           </Grid> 
          </ViewCell> 
         </DataTemplate> 
        </ListView.ItemTemplate> 
       </ListView> 
      </StackLayout> 
    </ContentPage> 


    <local:MyPage Title="Chart"/> 


    <ContentPage Title= "Guage"> 

    <ContentPage.BindingContext> 

     <local:RootObject></local:RootObject> 

    </ContentPage.BindingContext> 

    <chart:SfChart> 

    <chart:SfChart.PrimaryAxis> 

     <chart:CategoryAxis> 

      <chart:CategoryAxis.Title> 

        <chart:ChartAxisTitle Text="Date"> </chart:ChartAxisTitle> 

      </chart:CategoryAxis.Title> 

     </chart:CategoryAxis> 

    </chart:SfChart.PrimaryAxis> 

    <chart:SfChart.SecondaryAxis> 

     <chart:NumericalAxis> 

      <chart:NumericalAxis.Title> 

       <chart:ChartAxisTitle Text="Amount of Water Used (in Litres)"></chart:ChartAxisTitle> 

      </chart:NumericalAxis.Title>  

     </chart:NumericalAxis> 

    </chart:SfChart.SecondaryAxis> 

     <chart:SfChart.Series> 

     <chart:ColumnSeries ItemsSource="{Binding Feeds}" XBindingPath="Created_at" YBindingPath="Field1"> 

     </chart:ColumnSeries> 

     </chart:SfChart.Series> 

</chart:SfChart> 






    </ContentPage> 
</TabbedPage> 

XAMLメインページ

私はここでのコードの限りをコピーしようとして貼り付けます、私はイムが間違っているものを教えてください可能性がある場合、コード

using System.Net.Http; 
using Newtonsoft.Json; 
using Xamarin.Forms; 
using System.Collections.ObjectModel; 


using System.Collections; 
using System.Linq; 
using System.Linq.Expressions; 
using System.Text; 
using System.Threading.Tasks; 


namespace Drip 
{ 


    public partial class DripPage : TabbedPage 
    { 
     void Handle_Refreshing(object sender, System.EventArgs e) 
     { 
      postsListView.ItemsSource = _data; 
      postsListView.EndRefresh(); 
     } 

     private const string Url = "https://thingspeak.com/channels/301726/field/1.json"; 
     private HttpClient _client = new HttpClient(); 
     private ObservableCollection<Feed> _data; 


     public DripPage() 
     { 
      InitializeComponent(); 
     } 

     protected override async void OnAppearing() 
     { 
      var content = await _client.GetStringAsync(Url); 
      var data = JsonConvert.DeserializeObject<RootObject>(content); 

      _data = new ObservableCollection<Feed>(data.Feeds.OrderByDescending(x => x.Created_at)); 
      postsListView.ItemsSource = _data; 




      base.OnAppearing(); 
     } 

    } 
} 

メインのxamlで参照されるコードのC#splineSeriesチャート

sing Newtonsoft.Json; 
using Syncfusion.SfChart.XForms; 
using System; 
using System.Collections.Generic; 
using System.Collections.ObjectModel; 
using System.Linq; 
using System.Net.Http; 
using System.Text; 
using System.Threading.Tasks; 
using Xamarin.Forms; 
using Drip; 

namespace ChartGettingStarted 
{ 

    public class RootObject 
    { 

     public List<Feed> Feeds { get; set; } 
    } 

    public class Feed 
    { 
     public DateTime Created_at { get; set; } 
     public int Entry_id { get; set; } 
     public decimal Field1 { get; set; } 
    } 

    public class DripPage : ContentPage 
    { 
     private const string Url = "https://thingspeak.com/channels/301726/field/1.json"; 
     private HttpClient _client = new HttpClient(); 
     private ObservableCollection<Feed> _data; 


     SfChart chart; 
     SplineSeries series; 

     public DripPage() 
     { 
      chart = new SfChart(); 

      CategoryAxis primaryAxis = new CategoryAxis(); 

      chart.PrimaryAxis = primaryAxis; 

      //Initializing Secondary Axis 
      NumericalAxis secondaryAxis = new NumericalAxis(); 

      chart.SecondaryAxis = secondaryAxis; 
      series = new SplineSeries(); 
      Content = chart; 
     } 

     protected override async void OnAppearing() 
     { 
      var content = await _client.GetStringAsync(Url); 
      var data = JsonConvert.DeserializeObject<RootObject>(content); 
      _data = new ObservableCollection<Feed>(data.Feeds); 

      series.ItemsSource = _data; 
      series.XBindingPath = "Created_at"; 
      series.YBindingPath = "Field1"; 
      chart.Series.Add(series); 

      base.OnAppearing(); 
     } 


    } 
} 

モデル

namespace Drip 
{ 
    public class RootObject 
    { 

     public List<Feed> Feeds { get; set; } 
    } 
} 

名前空間ドリップ

{ 
    public class Feed 
    { 
     public DateTime Created_at { get; set; } 
     public int Entry_id { get; set; } 
     public decimal Field1 { get; set; } 
    } 
} 

namespace Drip 
{ 
    public class Channel 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
     public string Description { get; set; } 
     public string Latitude { get; set; } 
     public string Longitude { get; set; } 
     public string Field1 { get; set; } 
     public DateTime Created_at { get; set; } 
     public DateTime Updated_at { get; set; } 
     public string Elevation { get; set; } 
     public int Last_entry_id { get; set; } 
    } 
} 

は、事前にありがとうございます!

+0

DripPageと呼ばれる2つの異なるクラスがあります.1つはTabbedPageで、もう1つはContentPageで、それぞれ異なる名前空間にありますか?私は、DripPageのコードビハインドがチャートロジックで呼ばれていると思うようには見えません。私は本当にあなたが複数のページを取り除き、単なる単純なContentPageをチャート上に作成することを提案します。その作業をしたら、追加のページを追加できます。 – Jason

+0

ああ、私はsyncfusionのコンテンツページをアプリに統合しようとしていた。 –

+0

単純なコンテンツページを1つだけ作成する場合はどうすればいいですかjsonデータをコンテンツページに表示するには、jsonデータをリストビューとチャートに移動する方法を教えてください。 xamarinには全く新しいのでまだ分かりません –

答えて

0

コードスニペットを分析しましたが、バインディングコンテキストインスタンスのコレクション値を設定するために欠落しており、RootObjectクラスのINotifyPropertyChangedインターフェイスに継承されていません。お客様の要件に応じてサンプルを変更しました。以下のリンクから添付のサンプルを見つけてください。

SimpleSample

あなたがこの上さらに支援を持っている場合は、私たちに知らせてください。

関連する問題