是否可以将自定义属性添加到 Kendo 的面板栏小部件中的面板项?
Is it possible to add custom attributes to panel items in a panelbar widget for Kendo?
我正在寻找一种方法来使用 Kendo UI UI 的 PanelBar Widget 在我的数据源的项目数组中添加和引用自定义属性,例如项目的 ID =21=].
我正在用 React 构建我的组件。
示例:
componentDidMount(){
let itemsList = this.props.navProps.map((prop,index) => {
var open = false
if (index == 0) open = true
return { text: prop.name,
expanded: open,
items: [{text: "Sub Item 1", id: "hey"},
{text: "Sub Item 2", id: "ho"}]
}
})
const menuOptions = {
expandMode: "single",
dataSource: itemsList
}
let onSelect = function(e) {
console.log("Select: " + $(e.item).find("> .k-link").text());
}
let menu = new ppbar.ui.PanelBar(menudiv,menuOptions);
$(menu.element).kendoPanelBar({
select: onSelect,
});
render(){
return (
<div id='menudiv' />
)
}
出于某种原因,无论我尝试什么,我在 $(e.item)
中唯一能找到的是项目的文本值,而不是 id 值。
您可以使用 template 为面板栏中的每个项目添加一些带有 ID 属性的 html。
var inlineDefault = new kendo.data.HierarchicalDataSource({
data: [
{
id: 1, text: "Furniture", items: [
{ id: 2, text: "Tables & Chairs" },
{ id: 3, text: "Sofas" },
{ id: 4, text: "Occasional Furniture" }
]
},
{
id: 5, text: "Decor", items: [
{ id: 6, text: "Bed Linen" },
{ id: 7, text: "Curtains & Blinds" },
{ id: 8, text: "Carpets" }
]
}
]
});
$("#panelbar-left").kendoPanelBar({
dataSource: inlineDefault,
template: "<span class='myItemClass' data-itemid='#= item.id #'>#= item.text #</span>",
select: function(e){
alert("Item id = " + $(e.item).find(".myItemClass").data('itemid'));
}
});
DEMO
在这个例子中,我用跨度包围了文本。 class myItemClass 让我很容易 select 节点和 data-itemid 是数据中的 id。然后在 onSelect 中,您可以通过 $(e.item).find(".myItemClass").data('itemid')
.
检索 id
我正在寻找一种方法来使用 Kendo UI UI 的 PanelBar Widget 在我的数据源的项目数组中添加和引用自定义属性,例如项目的 ID =21=].
我正在用 React 构建我的组件。
示例:
componentDidMount(){
let itemsList = this.props.navProps.map((prop,index) => {
var open = false
if (index == 0) open = true
return { text: prop.name,
expanded: open,
items: [{text: "Sub Item 1", id: "hey"},
{text: "Sub Item 2", id: "ho"}]
}
})
const menuOptions = {
expandMode: "single",
dataSource: itemsList
}
let onSelect = function(e) {
console.log("Select: " + $(e.item).find("> .k-link").text());
}
let menu = new ppbar.ui.PanelBar(menudiv,menuOptions);
$(menu.element).kendoPanelBar({
select: onSelect,
});
render(){
return (
<div id='menudiv' />
)
}
出于某种原因,无论我尝试什么,我在 $(e.item)
中唯一能找到的是项目的文本值,而不是 id 值。
您可以使用 template 为面板栏中的每个项目添加一些带有 ID 属性的 html。
var inlineDefault = new kendo.data.HierarchicalDataSource({
data: [
{
id: 1, text: "Furniture", items: [
{ id: 2, text: "Tables & Chairs" },
{ id: 3, text: "Sofas" },
{ id: 4, text: "Occasional Furniture" }
]
},
{
id: 5, text: "Decor", items: [
{ id: 6, text: "Bed Linen" },
{ id: 7, text: "Curtains & Blinds" },
{ id: 8, text: "Carpets" }
]
}
]
});
$("#panelbar-left").kendoPanelBar({
dataSource: inlineDefault,
template: "<span class='myItemClass' data-itemid='#= item.id #'>#= item.text #</span>",
select: function(e){
alert("Item id = " + $(e.item).find(".myItemClass").data('itemid'));
}
});
DEMO
在这个例子中,我用跨度包围了文本。 class myItemClass 让我很容易 select 节点和 data-itemid 是数据中的 id。然后在 onSelect 中,您可以通过 $(e.item).find(".myItemClass").data('itemid')
.