KendoMVC图未正确排序类别,并且`databound''事件未启动

问题描述 投票:0回答:0

分类问题:
    即使数据在服务器端正确排序,图表也不会在X轴上显示正确的顺序数据。例如,X轴显示:“ Dec -2024”,“ Jul- 2024”,“ 8月 - 2024”,“”,“ 2月-2024”,“ 1月 - 2025年”,“”,“ 11月 - 2024年”,“ 5月-2024” 。请注意,“ 1月至2025年”出现在中间,不应该发生。
  1. databound

    event不发射:
  2. 我编写了一个自定义功能(ChartDatabound),以对客户端的类别进行排序,并将其绑定到Kendo图表的
  3. dataBound

    事件。但是,该功能并未被调用。我在功能中添加了一个

    alert()
    进行调试,但从未执行。
    client端代码(HTML + JavaScript):
    
    

    <div class="col-md-6 pt-20">         <label class="switch" title="Toggle to show numbers">             <input id="toggleForChart8" type="checkbox">             <span class="slider round"></span>         </label>         @(Html.Kendo().Chart<MiCATS.Models.ChartDataItem>()     .Name("chart8")     .Title("Gaps by Reasons")     .Theme("bootstrap")     .DataSource(dataSource => dataSource     .Read(read => read.Action("GetGapsIdentifiedByReasonsAnalytics", "Analytics"))     .Group(group => group.Add(model => model.Question))      )    .Series(series => {     series.Column(model => model.GapsIdentified)     .Aggregate(ChartSeriesAggregate.Sum)     .Tooltip(tooltip => tooltip.Visible(true).Template("#= value # Gaps Identified for: #= series.name #"))     .CategoryField("YearMonth")     .Name("");     })     .Legend(legend => legend     .Position(ChartLegendPosition.Bottom)     .Spacing(122)     .Labels(labels => labels.Template("#= truncateLegendLabel(text) #"))      )     .ValueAxis(axis => axis.Numeric().Color("black").Title("Gaps Count"))     .CategoryAxis(axis => axis.Color("black").Labels(label => label.Rotation(-45)).Title("Months"))     .Events(e => e.DataBound("chartDataBound"))     .Events(events => events.SeriesClick("onChartBarClick2").Render("onChartRender"))     .HtmlAttributes(new { style = "cursor: pointer;" }) )     </div>
function chartDataBound(e) {     alert("Inside chartDataBound");     var axis = e.sender.options.categoryAxis;     var monthMap = {         "Jan": 1,         "Feb": 2,         "Mar": 3,         "Apr": 4,         "May": 5,         "Jun": 6,         "Jul": 7,         "Aug": 8,         "Sep": 9,         "Oct": 10,         "Nov": 11,         "Dec": 12,     };     axis.categories = axis.categories.sort(function (a, b) {         // Ensure the categories are strings before splitting         if (typeof a !== 'string' || typeof b !== 'string') return 0;         var aParts = a.split(' ');         var bParts = b.split(' ');         // Check if the split worked correctly and both parts exist         if (aParts.length < 2 || bParts.length < 2) return 0;         var monthA = monthMap[aParts[0]];  // Get month number from the first part         var monthB = monthMap[bParts[0]];         var yearA = parseInt(aParts[2], 10);  // Get year as an integer from the second part         var yearB = parseInt(bParts[2], 10);         // Compare years first, then months if years are the same         if (yearA === yearB) {             return monthA - monthB;         } else {             return yearA - yearB;         }     }); }

我尝试过的是:


werder ver ver ver vered服务器端数据已正确排序。
添加了
console.log

和内部alert()内部调试,但没有称呼该功能。

检查了浏览器控制台中的JavaScript错误,但没有找到。
  1. 问题:
  2. 
    
    为什么
    chartDataBound
    事件不发射,我该如何修复?
    
    如何确保X轴类别在Kendo图表中正确排序?
数据库事件不会触发,因为您正在两次调用事件方法。我的猜测是,第二个取代了您在第一个中设置的内容:

dataBound

简单地将它们全部放在一起:
  1. .Events(e => e.DataBound("chartDataBound")) .Events(events => events.SeriesClick("onChartBarClick2").Render("onChartRender"))
    对于分类,我不确定。修复了数据库事件后,您的现有函数可能会很好地解决。
        
javascript .net asp.net-mvc kendo-ui kendo-asp.net-mvc
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.