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; }
}
}
は、事前にありがとうございます!
DripPageと呼ばれる2つの異なるクラスがあります.1つはTabbedPageで、もう1つはContentPageで、それぞれ異なる名前空間にありますか?私は、DripPageのコードビハインドがチャートロジックで呼ばれていると思うようには見えません。私は本当にあなたが複数のページを取り除き、単なる単純なContentPageをチャート上に作成することを提案します。その作業をしたら、追加のページを追加できます。 – Jason
ああ、私はsyncfusionのコンテンツページをアプリに統合しようとしていた。 –
単純なコンテンツページを1つだけ作成する場合はどうすればいいですかjsonデータをコンテンツページに表示するには、jsonデータをリストビューとチャートに移動する方法を教えてください。 xamarinには全く新しいのでまだ分かりません –