DataGrid в Dojo, с данными json из сервлета - PullRequest
4 голосов
/ 11 марта 2010

Я использую JSON впервые ... и хочу заполнить свою таблицу данных своими данными JSON, это мои данные JSON:

{
  "head": {
    "vars": [ "s" , "fname" , "lname" ]
  } ,
  "results": {
    "bindings": [
      {
        "s": { "type": "uri" , "value": "http://tn.gov.in/Person/41" } ,
        "fname": { "type": "literal" , "value": " } ,
        "lname": { "type": "literal" ,n" }
      } ,
      {
        "s": { "type": "uri" , "value": "http://tn.gov.in/Person/37" } ,
        "fname": { "type": "literal" , "value": "sh" } ,
        "lname": { "type": "literal" , "value": "Vvan" }
      } ,
      {
        "s": { "type": "uri" , "value": "http://tn.gov.in/Person/39" } ,
        "fname": { "type": "literal" , "value": "Vavan " } ,
        "lname": { "type": "literal" , "value": "Sran" }
      }
    ]
  }
}

Я хочу отобразить fname и lnameв сетке данных, как я должен это так?Можно ли дать пример кода, который работает для выше JSON?Я много пробовал с примерами, получаю пустую сетку

Ответы [ 2 ]

6 голосов
/ 12 марта 2010

Ключевым моментом здесь является то, что вам необходимо сначала преобразовать свои данные, прежде чем использовать их в сетке dojo.

Демонстрацию в режиме реального времени можно найти по адресу здесь .

dojo.require("dojox.grid.DataGrid");
dojo.require("dojo.data.ItemFileReadStore");

dojo.addOnLoad(function() {
    var data = { "head": { "vars": [ "s" , "fname" , "lname" ] } , "results": { "bindings": [ { "s": { "type": "uri" , "value": "http://tn.gov.in/Person/41" } , "fname": { "type": "literal" , "value": "Gayathri" } , "lname": { "type": "literal" , "value": "Vasudevan" } } , { "s": { "type": "uri" , "value": "http://tn.gov.in/Person/37" } , "fname": { "type": "literal" , "value": "Magesh" } , "lname": { "type": "literal" , "value": "Vasudevan" } } , { "s": { "type": "uri" , "value": "http://tn.gov.in/Person/39" } , "fname": { "type": "literal" , "value": "Vasudevan " } , "lname": { "type": "literal" , "value": "Srinivasan" } } ] } };

    var items = dojo.map(data.results.bindings, function(binding) {
        return {fname : binding.fname.value, lname : binding.lname.value};
    });

    var store =  new dojo.data.ItemFileReadStore({
        data : {
          items : items
        }
    });

    _createGrid(store);

    function _createGrid(store) {
        var layout = _getGridLayout(),
            node = dojo.create("div", {}, dojo.byId("grid"), "only");
        var grid = new dojox.grid.DataGrid({
            store : store,
            structure : layout,
            rowsPerPage: 10
        }, node);
        grid.update();
        grid.startup();
        return grid;
   }

   function _getGridLayout() {
      return [[
          { field : "fname", name : "First Name", width : "50%"},
          { field : "lname", name : "Last Name", width : "50%" }
      ]];
   }
});
0 голосов
/ 31 декабря 2011

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

var items,store;
    var ss = dojo.xhrGet({
        url: "http://localhost:8477/E-Governance/listPerson", 
        handleAs: "json", 
        preventCache: true,
        load: function(data){
            items = dojo.map(data.results.bindings, function(binding) {
                return {
                    fname : binding.fname.value, 
                    lname : binding.lname.value
                };                    
            });
            store =  new dojo.data.ItemFileReadStore({           
                data : {
                    items : items
                }
            });             
            console.log(items[0].fname+' '+items[0].lname);  
            _createGrid(sore);

        }
    });

    console.log('3-4');
...