Kendo UI getByUid()不在分层数据源中工作

时间:2016-02-03 10:09:48

标签: javascript kendo-ui telerik

我设置了一个Kendo UI分层数据源,但getByUid()无法正常工作。它返回' undefined'当我搜索一个我能看到的uid在我的分层数据源中时。

扭曲的是我在初始设置分层数据源后使用.data()方法搜索我添加的节点。

这是一个Kendo Dojo片段来说明 - 你会在底部看到我的console.log数据源,我正在搜索的uid和响应(' undefined'),所以你可以看到那个uid在那里。

Kendo Dojo Snippet

我认为我已经正确设置了我的模式和模型,据我从Kendo文档中可以看出,我应该能够使用.data()填充dataSource并使用新的JavaScript对象填充它,以及更多嵌套节点,但我仍然无法使用getByUid()搜索这些新节点。

以下是Dojo片段中的JavaScript:

var initColumns = [
  {
    id: 0,
    Index: 0,
    ResponsiveStyle: 3,
    Widgets: []
  },    
  { 
    id: 1,
    Index: 1,
    ResponsiveStyle: 3,
    Widgets:[]
  },
  { 
    id: 2,
    Index: 2,
    ResponsiveStyle: 3,
    Widgets: []

  }
];

var Columns = new kendo.data.HierarchicalDataSource({
  schema: {
    data: "Columns"

  }
});

var Rows = new kendo.data.HierarchicalDataSource({
  schema: {
    data: "Rows",
    model: rowModel
  }
});

var Widgets = new kendo.data.HierarchicalDataSource({
  schema: {
    data: "Widgets",
    model: layoutWidgetModel
  }
});

var layoutWidgetModel = kendo.data.Node.define({
  id: "layoutWidget",
  hasChildren: "Rows",
  children: Rows
});

var rowModel = kendo.data.Node.define({
  id: "rowModel",
  hasChildren: "Columns",
  children: Columns
});


var parentModel = kendo.data.Node.define({
  id: "parentModel",
  hasChildren: "Widgets",
  children: Widgets
});


var validator;
var viewModel = kendo.observable({
//create a dataSource
  dataSource: new kendo.data.HierarchicalDataSource({
    data: initColumns,

    schema: {
      model: parentModel
    }

  }),

  selected: {} //this field will contain the edited dataItem

});

viewModel.dataSource.read(); //invoke the read transport of the DataSource

//Create the variables to create an object for insertion into the main parent object for the HierarchicalDataSource
var Rows = [ { Index: 0, Columns: [
    {
    Index: 0,
    ResponsiveStyle: 0
  }]
} ];
var SubType = 'Joined';
var WidgetName = 'widget name';
    var Type = 'widget type';
    var DisplayType = 'widget subtype';
    var Title = 'widget title';
var Collapsible = true;
var Borders = 1;
var TitleBackground = 4;
var TitleColour = 6;

var kendoLayoutWidget = new layoutWidgetModel({ Title: Title, Type: Type, SubType: SubType, WidgetName: WidgetName, Collapsible: Collapsible, DisplayType: DisplayType, Borders: Borders, TitleBackground: TitleBackground, TitleColour: TitleColour, Rows: Rows });

//Get the uid of the new widget
var GUID = kendoLayoutWidget.uid;

//Get the current object from the HierarchicalDataSource
var VBdata = viewModel.dataSource.data();

//Push in the newly created widget object
VBdata[0].Widgets.push(kendoLayoutWidget);

//Replace the old data in the dataSource with the new multilevel object
viewModel.dataSource.data(VBdata);

//find the layoutwidget by getByUid()
var theWidget = viewModel.dataSource.getByUid(GUID);
console.log(viewModel.dataSource);
console.log(GUID);
console.log(theWidget);

0 个答案:

没有答案