我想访问以下事件的索引:seriesClick和seriesHover。我在这里只看到如何访问文档中特定栏的值和类别http://docs.kendoui.com/api/dataviz/chart#events-series单击但不单击项目所基于的原始对象的数据。
例如,您可以访问e.dataItem
中的各个数据项,因此可以执行以下操作:
var data = e.sender.dataSource.data();
for (var i=0; i < data.length ; i++) {
if (e.dataItem.uid === data[i].uid) {
console.log("index " + i);
}
}
如果这就是你所说的"指数"。
您还可以访问e.series
中的系列数据(但所有这些都在文档中)。
剑道图的默认数据序列是一个数值数组。这些值没有uid,因为它们不是对象。
创建一个对象数组,而不是在序列对象中创建一个数字数组。在series元素中,创建一个名为"field"的属性,并用对象中包含要绘制图表的数值的字段的名称填充该字段。此对象将有一个uid。我这样做是为了让我可以将url与数据点相关联,并在单击时移动到该页面。
我的对象是用C#创建的,并使用JSON传递,但您可以随心所欲地创建这些对象。
public class DowntimeAnalysisSeries : DatabagUtility
{
public string name { get; set; }
public string field { get; set; }
public DowntimeAnalysisDatapoint[] data { get; set; }
//public decimal[] data { get; set; }
public string color { get; set; }
}
public class DowntimeAnalysisDatapoint
{
public decimal dataValue { get; set; }
public string url { get; set; }
}
现在您可以使用Lars Höppner上面描述的逻辑。一旦我把我的数据放入一个对象中,我就不再需要知道索引了,因为Kendo把它给了我
我通过在图形设置中放入以下行来附加到系列点击事件:
seriesClick: function (e){rla_summaryBarClicked(e);}
我调用的函数如下:
function rla_detailBarClicked(e) {
var item = e.dataItem;
var url=item.url;
// do stuff with url here...
}
}
我填充到dataItem中的所有信息对我来说都是可用的。
我在事件结构中找不到成员e.series或e.uid,这是下一个:
e: Object
_defaultPrevented: false
category: Tue Jul 05 2011 12:00:00 GMT+0400
element: S.fn.init[1]
isDefaultPrevented: function (){return this._defaultPrevented===!0}
preventDefault: function (){this._defaultPrevented=!0}
sender: vn.extend.init
value: 9.833887
__proto__: Object
但在同一时间数组项中,它有:
100: i.extend.o
DateTimeLocal: Sat Jul 02 2011 00:00:00 GMT+0400
DateTimeUTC: "/Date(1309554000000)/"
Value: 0.6488973049506388
_date_DateTimeLocal: Sat Jul 02 2011 00:00:00 GMT+0400
_events: Object
dirty: false
parent: function (){return r}
uid: "e5376556-c50b-4653-8889-5eb4ea7c2c28"
DateTime比较也没有给出应用此块的结果
var data = e.sender.dataSource.data();
for (var i = 0; i < data.length ; i++) {
var d = data[i].DateTimeLocal;
if (e.category == data[i].DateTimeLocal) {
console.log("index " + i);
}
}
对我来说,这就是工作原理:
seriesClick: function (e) {
var data = e.series.data;
for (var i = 0; i < data.length ; i++) {
if (e.dataItem === data[i]) {
console.log("index " + i);
}
}