Привязка данных сетки пользовательского интерфейса Kendo с использованием шаблона mvvm

Я новичок в пользовательском интерфейсе кендо, я хочу связать сетку пользовательского интерфейса кендо, используя шаблон MVVM, и мой источник данных — список точек обмена. поэтому я вызываю данные списка sharepoint через код CSOM javascript. Я пробовал другое решение, но ничего не работает. У меня есть сбор данных из списка sharepoint.

var divisionListData = [];
//var divisionsViewModel;

var viewModel = kendo.observable({
    isVisible: true,
    onSave: function (e) {
        alert('hi');
        kendoConsole.log("event :: save(" + kendo.stringify(e.values, null, 4) + ")");
    },
    divisions: new kendo.data.DataSource({
       // schema: {
            data: divisionListData,
            schema: {
                data: "rows",   
                model: {
                    fields:
                                    {
                                        ID: { type: "string" },
                                        DivisionName: { type: "string" },
                                        DivisionCode: { type: "string" },
                                        OpenDate: { type: "datetime" },
                                        CloseDate: { type: "datetime" },
                                        Description: { type: "string" },
                                    }
                }
            },
    batch: true,
        transport: {

            read: function (e) {
                return divisionListData;
            }
})
})

function ReadList() {
    //this.set("isDisabled", false);
    var clientContext = new SP.ClientContext.get_current();
    // denote that we will be performing operations on the current web
    var web = clientContext.get_web();
    // denote that we will be querying the "Business Divisions" custom SharePoint list
    var divisionsList = web.get_lists().getByTitle("Divisions");
    // create a CAML query (blank means just return all items)
    var camlQuery = new SP.CamlQuery();
    // denote that the operation we want to perform is getItems() on the list
    var divisionsListItems = divisionsList.getItems(camlQuery);
    var fields = 'Include(ID,DivisionCode, DivisionName, OpenDate, CloseDate, Description)';
    clientContext.load(divisionsListItems, fields);  
    clientContext.executeQueryAsync(function () {
        // get the list item enumerator
        var listItemEnumerator = divisionsListItems.getEnumerator();

        // loop through the items in our custom 
        // "Divisions" SharePoint list
        var listItem;

        while (listItemEnumerator.moveNext()) {
            var division = new Division();
            // get the list item we are on
            listItem = listItemEnumerator.get_current();

            // get the divisions
            division.ID = listItem.get_item("ID");
            // var lookup_DivisionCode = listItem.get_item("DivisionCode").get_lookupValue();
            //lookup_DivisionCode.get_l
            var divisionLookupField = new SP.FieldLookupValue();
            divisionLookupField = listItem.get_item("DivisionCode");
            //var test = divisionLookupField.$2d_1;
            if (divisionLookupField != null)
                division.DivisionCode = divisionLookupField.$2d_1;
            division.DivisionName = listItem.get_item("DivisionName");
            division.Description = listItem.get_item("Description");
            division.OpenDate = listItem.get_item("OpenDate");
            division.CloseDate = listItem.get_item("CloseDate");
            divisionListData.push(division);
            kendo.bind($("body"), viewModel);
        }

    })
}

person Anupam Sharma    schedule 16.12.2013    source источник
comment
Пожалуйста, предоставьте код того, что вы пробовали, и некоторые конкретные ошибки. Это позволит людям больше помогать вам   -  person geedubb    schedule 16.12.2013
comment
Держите SCOM в стороне, сначала используйте статические данные, и как только вы заработаете с mvvm, продвигайтесь дальше.   -  person Vojtiik    schedule 17.12.2013


Ответы (1)


Вы довольно близки, вместо того, чтобы возвращать массив внутри функции read: (e), вам нужно вызвать

e.success(yourArrayOfData);
person Robin Giltner    schedule 16.12.2013