Kendo饼图SeriesClick事件首次调用后失效问题求助
我看了你的代码,发现几个关键问题导致饼图的seriesClick事件首次调用后失效,咱们一步步来解决:
1. 语法错误导致代码执行中断
你的回调函数和柱状图函数里存在明显的语法错误,这些错误会让首次点击后JavaScript抛出异常,直接中断后续代码执行,自然就没法响应后续点击了:
onDb函数最后用了];,这是完全错误的闭合方式,应该替换成}来正确结束函数。createChartForInterventions函数末尾多了一个多余的});,直接删掉这个无效的闭合符号即可。
2. 柱状图函数的参数与元素选择器问题
你的柱状图函数存在两个致命问题:
- 函数定义要求传入
dataForInter参数,但调用时createChartForInterventions();完全没传参,这会导致柱状图初始化时数据源为空,直接报错。 - 函数里用了全局的
chartID变量,很容易和其他组件的选择器冲突,应该改成像Grid函数那样接收具体的元素参数。
修正后的柱状图函数:
function createChartForInterventions(chartElement, dataForInter) { chartElement.kendoChart({ legend: { visible: false }, series: [{ data: dataForInter, type: "column", color: "#FDB45C", field: "cp_type_present", categoryField: "turbineName" }] }); }
3. 修正完整的调用逻辑
确保调用时给柱状图传递正确的元素和数据源,同时修正所有语法错误:
$.ajax({ dataType: "json", type: "POST", url: "@Url.Action("faultstatCrewPresentIntervetion","Dashbrd")", contentType: "application/json; charset=utf-8", data: JSON.stringify({ "dtFrom": dtDrpVals.fromDate, "dtTo": dtDrpVals.toDate }), success: function (result) { // 修正后的回调函数 function onDb(e) { createDynamicGrid($("#gridProAvail"), result.interInprog, clmns); // 传入柱状图的DOM元素和对应数据源(假设result里有columnChartData字段) createChartForInterventions($("#columnChart"), result.columnChartData); } // 初始化饼图 pieChartForInterventions($("#pieChart"), result.nbr_ofCPtype, onDb); } });
额外注意点
- 确保Grid、饼图、柱状图的目标DOM元素是完全独立的(比如分别对应
#gridProAvail、#pieChart、#columnChart),避免组件初始化时互相覆盖。 - Kendo UI组件重新初始化时会自动销毁旧实例,但只要目标元素不同,就不会影响饼图的事件绑定。
修正这些问题后,seriesClick事件应该就能正常响应每一次饼图点击了。
内容的提问来源于stack exchange,提问作者user9704250
相关产品推荐
相关产品推荐

