我在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);