如何将kendo-menu绑定到远程数据源?

时间:2014-04-15 17:05:45

标签: kendo-ui datasource bind kendo-menu

下面是我的代码

$("#lhsPanelBar").kendoMenu({
    orientation: 'vertical',
    dataSource:
        {
            type: 'json',
            transport:  {
                    read: "http://localhost:3549/api/LHSMenu"
                }
        },
});

但控制器上没有服务器命中,菜单显示为“未定义”。

控制器代码

public class LHSMenuController : ApiController
{
    private IRepo repo;
    public LHSMenuController()
    {
        repo = new Repository();
    }

    [HttpGet]
    public IEnumerable<LHSMenu> GetLHSMenu()
    {
        return this.repo.Menu;
    }
}

3 个答案:

答案 0 :(得分:2)

剑道菜单无法直接执行,但您可以使用数据源的更改方法并使用此功能创建菜单,请尝试以下操作:

var menuDataSource = new kendo.data.DataSource({
                      transport: {
                            read: {
                              url: "/app/test/menuItems",
                              dataType: "json"
                            }
                          },
                        change: function() {
                            var dataMenu = this.data(); 
                            console.log("from change: " + dataMenu.length);
                            for (var indexMenuDataSource = 0; indexMenuDataSource < dataMenu.length; indexMenuDataSource++) {
                                var objectToPut = {};
                                var data = dataMenu[indexMenuDataSource];
                                objectToPut.text = data.text;
                                objectToPut.url = data.url;
                                objectToPut.cssClass = data.cssClass;
                                objectToPut.imageUrl = data.imageUrl;
                                if(data.items.length > 0){
                                    objectToPut.items = [];
                                    for(var indexSubItem = 0; indexSubItem < data.items.length; indexSubItem++){
                                        var subItem = {};
                                        subItem.text = data.text;
                                        subItem.url = data.url;
                                        subItem.cssClass = data.cssClass;
                                        subItem.imageUrl = data.imageUrl;
                                        objectToPut.items.push(subItem);                                            
                                    }
                                }
                                menu.insertAfter(objectToPut,  menu.element.children("li:last"));
                            }
                        }
            });

            var menu = $("#menuTest").kendoMenu().data("kendoMenu");
            menuDataSource.read(); //Will launch the change function

注意:它是草稿,创建另一个迭代子&gt;的函数; sub>子项。

答案 1 :(得分:0)

您应该以菜单的json友好格式返回结果。试试这个:

[HttpGet]
public IEnumerable<LHSMenu> GetLHSMenu()
{
    return Json(this.repo.Menu,JsonBehavoir.AllowGet);
}

答案 2 :(得分:0)

Kendo UI菜单目前不支持绑定到远程数据源。