【问题标题】:Display Bar Chart in Xamarin.Forms Daily Count在 Xamarin.Forms 每日计数中显示条形图
【发布时间】:2021-02-21 22:27:01
【问题描述】:

我正在使用Xamarin.Forms,我正在使用Microcharts 创建条形图。

我正在尝试制作一个条形图来显示本周每天输入的书籍数量 - 从星期一到星期日。

但是,当用户在周日查看页面时,条形图仅显示周日的计数,因为它显示的是周一至周六的下一周。

相反,条形图应显示本周周一至周日的数据。

var days = Enum.GetValues(typeof(DayOfWeek)).OfType<DayOfWeek>().OrderBy(day => day < DayOfWeek.Monday);
var dailyBookCounts =  new Dictionary<string, int>();
foreach (var day in days)
{
    var specificDayAtMidnight = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek + (int)day);
    var bookCount = App.Database.GetDailyCount(specificDayAtMidnight);
    dailyBookCounts.Add(day.ToString("G"), bookCount);
}

var entries = new List<ChartEntry>();
foreach (var (nameOfTheDay, bookCountOfTheDay) in dailyBookCounts)
{
    entries.Add(new ChartEntry(bookCountOfTheDay)
    {
        Label = nameOfTheDay,
        ValueLabel = bookCountOfTheDay.ToString(),
        Color = SKColor.Parse("#004daa")
    });
}

chartView.Chart = new BarChart
{
    Entries = entries, 
    LabelTextSize = 32f, 
    LabelOrientation = Orientation.Horizontal, 
    ValueLabelOrientation = Orientation.Horizontal, 
    Margin = 20
};

数据库.cs:

public int GetDailyCount(DateTime day)
{
     var dayAfterCurrentDay = day.AddDays(1); 
     return database.ExecuteScalar<int>("SELECT COUNT(*) FROM Book WHERE bookSaveTime> ? AND bookSaveTime< ?;", day, dayAfterCurrentDay);   
}

如何更改此设置,以便条形图显示本周周一至周日的数据(而不是在周日查看页面时显示接下来几周的数据)?

【问题讨论】:

    标签: c# xamarin xamarin.forms


    【解决方案1】:

    您没有正确计算本周的天数。您可以使用此question 的扩展方法来执行此操作

    // get the first day of current week, starting Monday at 12:00AM
    DateTime dt = DateTime.Now.StartOfWeek(DayOfWeek.Monday);
    
    for (var d = 0; d < 7; d++)
    {
      var specificDayAtMidnight = dt.AddDays(d);
      var bookCount = App.Database.GetDailyCount(specificDayAtMidnight);
      dailyBookCounts.Add(specificDayAtMidnight.ToString("G"), bookCount);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-04
      • 2019-08-01
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 2016-01-04
      • 2018-09-20
      相关资源
      最近更新 更多