2014-12-18 1 views
0

Я написал код для доступа к данным из службы RESTFUL в dataView для заполнения таблицы Slick Grid.Необлученное исключение: каждый элемент данных должен реализовать уникальное свойство «id». Slick.dataview.js

Я получаю сообщение об ошибке, что каждый элемент данных должен реализовать уникальное свойство идентификатора!

Я передаю уникальный идентификатор в режиме просмотра данных при установке данных в представление данных, но ничего не происходит.

var dataView; 
    var grid; 
    var data; 
    var options = { 
    forceFitColumns: true, 
    enableColumnReorder: false, 
    autoExpandColumns: true 
    }; 

    var columns = [{ 
    id: "userId", 
    name: "User Id", 
    field: "userId" 
    }, { 
    id: "id", 
    name: "Id", 
    field: "id" 

    }, { 
    id: "title", 
    name: "Title", 
    field: "title" 

    }, { 
    id: "completed", 
    name: "Completed", 
    field: "completed" 

    }]; 

    $.ajax({ 
    url: 'http://jsonplaceholder.typicode.com/todos/', 
    async: false, 
    success: function (response) { 
     data = JSON.stringify(response); 
     console.log("received data " + JSON.stringify(response)); 
    }, 
    error: function() { 
     console.log("error while getting data"); 
    } 
    }); 

    dataView = new Slick.Data.DataView(); 

    dataView.beginUpdate(); 
    dataView.setItems(data, "id"); 
    dataView.endUpdate(); 


    grid = new Slick.Grid('#slickGrid', dataView, columns, options); 

    // Make the grid respond to DataView change events. 

    dataView.onRowCountChanged.subscribe(function (e, args) { 
    alert("1"); 
    grid.updateRowCount(); 
    grid.render(); 
    }); 


    dataView.onRowsChanged.subscribe(function (e, args) { 
    alert("2"); 
    grid.invalidateRows(args.rows); 
    grid.render(); 
    }); 

JSFIDDLE ЗДЕСЬ

+0

не уверен, как это работает. На вашей скрипке я передал ответ прямо как объект, а не строгий. Я также должен был установить высоту окна просмотра, когда он делал высоту: 0. Тем не менее он показывает только две строки, и когда вы нажимаете одну строку, появляется другая. [Фидл] (http://jsfiddle.net/anpsmn/4UyNA/117/). Надеюсь, это поможет вам идти вперед. – anpsmn

+0

Спасибо @anpsmn. Теперь он работает, я думаю, проблема была связана только с высотой. –

ответ

0

использование JSON.parse и затем передать его, чтобы установить элементы

data=JSON.parse(data); 
dataView.beginUpdate(); 
dataView.setItems(data, "id");