【问题标题】:Telerik Kendo Chart : How to bind the chart to a string typeTelerik Kendo Chart : 如何将图表绑定到字符串类型
【发布时间】:2020-10-21 14:19:04
【问题描述】:

我一直在挣扎,我找不到任何与此相关的东西。我是 Kendo 的新手,遗憾的是我找不到任何可以帮助我的问题、文档、论坛和所有这些的东西:他们根本没有帮助

情况: 我的 ASP .NET 应用程序中有一个视图模型。我正在尝试用一种称为“类型”的特性来制作图表。这个属性代表一种数据——比如说水果,比如“香蕉”、“苹果”等。 该类型仅包含并且当时仅包含一种类型。它不能包含“苹果和香蕉”之类的东西。它也总是一个字符串。 这种特权是更大模型的一部分。 但我只对这个感兴趣

现在,我喜欢做什么: 我想用剑道做一个图表,从那个礼节。 这意味着,我必须将我的图表绑定到我的模型,然后它才能知道其中一些类型被使用了多少次。 比如,example,如果我有三个对象: 名称:“穆祖尔” 类型:“土豆”

名称:“Uijqf” 类型:“苹果”

名称:“Zjli” 类型:土豆”

我希望我的 char 计算我的模型使用了两次 Potato 类型和一次 Apple 类型。 我知道如何获取包含使用我的模型的所有对象的数据源。 (我之前已经使用过 Kendo Grid,但它非常简单)我现在的问题是我不知道 - 而且我无法找到任何 - 如何在图表中实际显示我想要的内容。我再说一遍,它们是字符串。我知道如何获取我的数据源。我不知道如何真正展示我想要展示的东西。 (我应该使用列吗?部分?我不知道)

我是否需要从我的控制器构建一个 JSON 来要求数据库进行计数?剑道自己能做到吗?我很迷茫,我不知道剑道实际上在等待什么来使我的图表正常工作。该文档根本没有帮助。我已经研究了一段时间,我还没有找到任何描述完全相同的问题的东西。我已经找了好几天了。 我画得很糟糕的图像是为了在我的问题上放一张图片:

我不要求为我做这件事,我要求一条路。一种方法。 谢谢。

【问题讨论】:

    标签: asp.net-mvc kendo-ui kendo-asp.net-mvc


    【解决方案1】:

    一种方法是专门为您的图表创建一个视图模型,然后您可以根据您的数据填充该视图模型。

    大致(未经测试的代码 - 仅供参考),如下所示:

    public class MyChartViewModel
    {
        public int TypeCount { get; set; }
        public string TypeName { get; set; }
    }
    

    然后在填充 MyChartViewModel 的图表的读取方法中:

        var myExistingDataModel = howeverYouGetYourDataHere;
        var model = new MyChartViewModel();
    
        var distinctTypes = myExistingDataModel.Select(x => x.Type).Distinct().ToList();
    
        foreach (var distinctType in distinctTypes)
        {
            model.TypeCount = myExistingDataModel.Count(x => x.Type == distinctType);
            model.TypeName = distinctType;
        }
    

    【讨论】:

    • 您好,首先感谢您的回答。我对这个算法的问题是它计算数据库中有多少类型,而不是数据库中存在多少次类型。我想我要做的是用 SQL 来做,然后我会尝试用 Linq 来做。也许 SQL 部分会帮助我弄清楚算法。
    • 在另一篇文章中发现 - stackoverflow.com/questions/4884462/linq-distinct-count !现在我想我必须按图表中的类型绑定计数,这将是另一个挑战。但是感谢您的帮助!
    【解决方案2】:

    终于!我设法做到了! 供将来参考:

    根据 G_P 的回答,我使用 LINQ 请求来计算我的所有类型:Linq distinct - Count(不要忘记删除 .District() 否则我将无法工作!)

    然后,我进行了一些调试以查看我是否真的返回了我的数据,因为图表中没有显示任何内容。它确实返回了我的数据和正确的数字。

    这个案例的问题是,我使用

    return Json(types.ToDataSourceResult(request, ModelState));
    

    将我的数据返回到我的图表。但 !关于图表有一点需要了解,它们不像网格那样工作。如果使用 ToDataSourceResult ,则必须使用特定设置来显示数据:https://docs.telerik.com/aspnet-mvc/html-helpers/charts/data-binding(请参阅“3)(可选)配置自定义数据源。”),只需更改对控制器的调用,瞧!成功了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多