Kendo ui 在剑道图中的图表中显示所有周日?

Kendo ui 在剑道图中的图表中显示所有周日?,kendo-ui,Kendo Ui,我试图实现以下行为: @*Sample Data:*@ var _data=[{"weight":149.91,"createddate":"8/1/2014"}, {"weight":0.000000000000000001,"createddate":"8/2/2014"}, {"weight":200,"createddate":"8/3/2014"}, {"weight":0.000000000000000001,"

我试图实现以下行为:

       @*Sample Data:*@

       var _data=[{"weight":149.91,"createddate":"8/1/2014"},
       {"weight":0.000000000000000001,"createddate":"8/2/2014"},
       {"weight":200,"createddate":"8/3/2014"},
       {"weight":0.000000000000000001,"createddate":"8/4/2014"}]

       $("#kk").kendoChart({
            dataSource: {
                data:_data
            },
            seriesColors: ["Red"],                
            seriesDefaults: {
                type: "column",
            },
            series: [{
                name: "weight",
                field: "weight",
                categoryField: "createddate",
            }],
            categoryAxis: {
                type: "date",
                baseUnit: "days",
                labels: {
                    rotation: -45,
                    dateFormats: {
                        days: "ddd"
                    }
                },
            }                        
        });

但我的图表如下所示。它在json数组中只有一条记录

即使一周中有几天没有数据,我也需要显示第一张图中的工作日


这是一个解决方法,可以获取不显示任何值的日期。解决方法是将没有权重值的日期的权重设置为0.000000000000000001。此外,我还将category baseunit更新为days,并为您添加了一些示例数据,以便您可以查看它的外观。当您返回JSON标记时,可以将0.000000000000000001放在值为0的日期上。代码如下:

       @*Sample Data:*@

       var _data=[{"weight":149.91,"createddate":"8/1/2014"},
       {"weight":0.000000000000000001,"createddate":"8/2/2014"},
       {"weight":200,"createddate":"8/3/2014"},
       {"weight":0.000000000000000001,"createddate":"8/4/2014"}]

       $("#kk").kendoChart({
            dataSource: {
                data:_data
            },
            seriesColors: ["Red"],                
            seriesDefaults: {
                type: "column",
            },
            series: [{
                name: "weight",
                field: "weight",
                categoryField: "createddate",
            }],
            categoryAxis: {
                type: "date",
                baseUnit: "days",
                labels: {
                    rotation: -45,
                    dateFormats: {
                        days: "ddd"
                    }
                },
            }                        
        });

请对此进行查看,以查看输出

,因此您只需将端点附加到数据数组中即可。您可以在返回数据的控制器中或稍后使用JavaScript执行此操作(这将导致您重新绘制图表,除非您在将数据放入图表之前捕获到数据)

您需要像其他数据一样创建一个Json对象数组。可能看起来像这样。startDate和endDate是您选择的范围

function endPoints(){
return [{createddate:startDate,weight:0},{createddate:endDate,weight:0}];
}
您可以使用类似这样的内容附加这些数据点

function addDataToChart(data) {
  var ds = $('#kk').data('kendoChart').dataSource;
  ds.data($.merge(data, endPoints()));
  //You can use ds.data() if you want to use the data that is already in the chart
}
$.ajax({
  url:'URLtoReturnData'
  dataType:'json',
  success:function(data){addDataToChart(data);},
  error:function(e){errorHandler(e);}  
});
在我自己的仪表板项目中,我将使用自己的Ajax调用获取数据,并在将数据放入图表之前附加端点。完整的ajax函数可以如下所示

function addDataToChart(data) {
  var ds = $('#kk').data('kendoChart').dataSource;
  ds.data($.merge(data, endPoints()));
  //You can use ds.data() if you want to use the data that is already in the chart
}
$.ajax({
  url:'URLtoReturnData'
  dataType:'json',
  success:function(data){addDataToChart(data);},
  error:function(e){errorHandler(e);}  
});

我希望这能有所帮助。

你能显示你的标记和JSON吗?@Andrew:用Fiddle的链接更新了我的问题,但在我的示例中,JSON数组中只有一条记录。那么你想显示一周中的所有其他日子吗?准确地说,即使那天的数据丢失(例如:sun、mon等)我想在JSON中的Axis类别中显示它们,而不是获取createddate,您可以获取日期,即Wed。如果您可以更新它,那么您可以在分类轴中将周天数设置为静态,等等,我将为您提供一个更新的JSFIDLE。