为什么我的ChardGrid根据添加的条目数来复制结果?

时间:2019-02-08 13:16:09

标签: xamarin.forms

我在xamarin表单上有一个ChartGrid,并且我可以运行,但是它们存在重复问题。输入的第一个“症状”可以正常工作,并且图形可以正确显示分数,但是当我添加第二个“症状”时,图形会将第二个分数识别为第一个,第一个分数作为第二个,然后当我添加第三个分数时“症状”图会重现第一个分数3次,并且对第四个/第五个分数也是如此。

我设置的最低分数必须为2,但是在第一个“症状”出现后,此规则将不起作用。

这是分数更新的页面。

async void HandleAction()
    {
        Device.BeginInvokeOnMainThread(async () => {
            await AddSymptomFeedback(rangeSlider.IDValue, rangeSlider.Value.ToString());
        });



    }


    async Task AddSymptomFeedback(string usersymid, string value)
    {




        symptomFeedback.Usersymptomid = usersymid;
        symptomFeedback.Intensity = value;
        symptomFeedback.UserID = Helpers.Settings.UserKey;
        symptomFeedback.DateTime = DateTime.Now.ToString("dd/MM/yyyy HH:mm");
        symptomFeedback.Datetimelimit = DateTime.Now.AddMinutes(30).ToString("d");

        try
        {

            await symptomFeedbackManager.AddSymptomfeedback(symptomFeedback);
            await DisplayAlert("Feedback Added", "Your symptom feedback has been added", "OK");

            await Navigation.PushAsync(new newviewsymptom());
            Navigation.RemovePage(this);
            HasAdjustedSl1ider = false;

            //We have to null the id so that we are not always updating the existing feedback item
            symptomFeedback.Id = null;

            //Refresh the List View 
            //await GetUserSymptoms();
        }
        catch (Exception ex)
        {
            await DisplayAlert("Error", ex.ToString(), "OK");
        }
    }

这是图形和详细信息的页面。

异步void Handle_ValueChanging(对象发送者,Syncfusion.SfRangeSlider.XForms.ValueEventArgs e)         {

        float range = e.Value;
        rangeSlider = e.RangeSlider as ExtendedRangeSlider;
        HasAdjustedSl1ider = true;
        string IDs = rangeSlider.IDValue;

        string[] FeedbackIDtoSplit = IDs.Split(',');


        if (FeedbackIDtoSplit != null)
        {
            FeedbackID = FeedbackIDtoSplit[0];
            IDofSymptomforAdjusting = FeedbackIDtoSplit[1];
        }


    }


    public async Task GetSymptomFeedback(string id)
    {

        SymptomFeedbackData.Clear();
        symptomChart.Series.Clear();



        BusyIndicator.IsRunning = true;
        SymptomFeedbackData = await symptomsfeedbackmanager.getUserSymptomFeedback(id);

        //We need more than one item of feedback to chart the data, so ensure this is the case
        if (SymptomFeedbackData.Count < 2)
        {
            Label SymptomLogo = new Label();
            SymptomLogo.Text = peoplewithfonticon.Symptoms;
            SymptomLogo.FontFamily = "icomoon";
            SymptomLogo.FontSize = 80;
            SymptomLogo.Margin = new Thickness(40, 80, 0, 0);

            Label SymptomTitle = new Label();
            SymptomTitle.Text = "Insiffcent Data to Generate Chart";
            SymptomTitle.FontSize = 50;
            SymptomTitle.FontAttributes = FontAttributes.Bold;
            SymptomTitle.Margin = new Thickness(40, 80, 0, 0);
            main.Children.Add(SymptomLogo);
            main.Children.Add(SymptomTitle);
            main.Children.Remove(ChartGrid);
            this.Content = main;

            BusyIndicator.IsRunning = false;
        }

        foreach (var FeedbackItem in SymptomFeedbackData)
        {
            FeedbackItem.Idusersymptomid =  FeedbackItem.Id + ',' + FeedbackItem.Usersymptomid;


        }

        IEnumerable<SymptomFeedback> OrdreredFeedbackData =  SymptomFeedbackData.OrderBy(X => X.DateTime);

        LineSeries columnseries = new LineSeries
        {
            ItemsSource = OrdreredFeedbackData,
            XBindingPath =  "DateTime",
            YBindingPath = "Intensity",

            DataMarker = new ChartDataMarker
            {
                ShowLabel = true,
                ShowMarker = true,
                MarkerHeight = 5,
                MarkerWidth = 5,
                MarkerColor = Xamarin.Forms.Color.Purple
            }

        };






        BusyIndicator.IsRunning = false;



        symptomChart.PrimaryAxis.ShowTrackballInfo = true;


        if (columnseries.ItemsSource != null)
        {
            symptomChart.Series.Add(columnseries);
        }


        symptomChart.ChartBehaviors.Add(new ChartTrackballBehavior());

        //Sort Collection by datetime 



        SymptomsList.ItemsSource = OrdreredFeedbackData.Reverse(); 


    }

    async Task AddSymptomFeedback(string id, string value, string usersymid)
    {

        CurrentSymptomFeedback.Id = id;
        CurrentSymptomFeedback.Usersymptomid = usersymid;
        CurrentSymptomFeedback.Intensity = value;
        CurrentSymptomFeedback.UserID = Helpers.Settings.UserKey;
        CurrentSymptomFeedback.DateTime = DateTime.Now.ToString("dd/MM/yyyy HH:mm");
        CurrentSymptomFeedback.Datetimelimit = DateTime.Now.AddMinutes(30).ToString();


        try
        {

            await symptomsfeedbackmanager.AddSymptomfeedback(CurrentSymptomFeedback);
            await DisplayAlert("Feedback Edited", "Your symptom feedback has been edited", "OK");
            HasAdjustedSl1ider = false;
        }
        catch (Exception ex)
        {
            await DisplayAlert("Error", ex.ToString(), "OK");
        }
    }



    async void SubmitFeedback_Clicked(object sender, EventArgs e)
    {

        ExtendedGrialButton btn = sender as ExtendedGrialButton;
        string UserSymptomID = btn.IDValue;

        if (btn.IDValue != IDofSymptomforAdjusting)
        {
            await DisplayAlert("Add feedback", "Please add feedback for the symptom selected", "OK");
        }

        else if (rangeSlider == null)
        {
            await DisplayAlert("Add feedback", "Please add feedback for a symptom", "OK");
        }

        else

        {
            await AddSymptomFeedback(FeedbackID, rangeSlider.Value.ToString(), UserSymptomID);


            await GetSymptomFeedback(CurrentSymptomFeedback.Usersymptomid);

0 个答案:

没有答案