2011-07-22 13 views
0

DOJO Enhanced DataGridの編集済み情報でデータベーステーブルを更新する方法の実例はありますか?私は、echos json_encode(...)でdojo.data.ItemFileWriteStoreを使用してpostgresqlデータベースバックエンドを持っています。DOJO拡張DataGrid - データベースの更新

<head> 
<script type="text/javascript"> 
dojo.require("dojox.grid.EnhancedGrid");   
dojo.require("dojo.data.ItemFileWriteStore"); 
dojo.require("dojox.grid.enhanced.plugins.Pagination"); 
dojo.require("dojox.grid.enhanced.plugins.Filter"); 

dojo.addOnLoad(function() { 
    // our test data store for this example: 
    var jsonStore = new dojo.data.ItemFileWriteStore({ 
     url: 'queries/catalog_qry.php' 
}); 

// set the layout structure: 
var gridLayout = [{ 
    field: 'name_link', 
    width: '30px' 
},{ 
    field: 'name', 
    name: 'Description', 
    editable: 'true', 
    width: 'auto' 
},{ 
    field: 'quantity_owned', 
    name: 'Quantity', 
    width: '150px' 
},{ 
    field: 'avg_unit_price', 
    name: 'AVG Unit Price ($)', 
    width: '150px' 
     },{ 
    field: 'category', 
    name: 'Category', 
    width: '150px', 
    editable: 'true', 
    type: dojox.grid.cells.Select, 
    options: ['CFE', 'GFE', 'Other'] 
     }]; 

//plugins 
var plugins = { 
    pagination: true, 
    filter: true 
}; 

    // create a new grid: 
     var grid1 = new dojox.grid.EnhancedGrid({ 
      id: 'grid', 
    query: { name: '*' }, 
      store: jsonStore, 
      structure: gridLayout, 
    plugins: plugins, 
    columnReordering: true, 
    escapeHTMLInData: false 
     },document.createElement('div')); 

     // append the new grid to the div "grid": 
     dojo.byId("grid").appendChild(grid1.domNode); 

     // Call startup, in order to render the grid: 
     grid1.startup(); 

}); 
</script> 
</head> 

<body class="claro"><div id="grid" style="width: 100%; height: 100%;"></div></body> 

答えて

1

Save-API for ItemFileWriteStore。また、ページの下部にbeautiful exampleがあります。ちょうどあなたのstore._saveCustom適応:

geoStore2._saveCustom = function(saveComplete, saveFailed) { 
      var changeSet = geoStore2._pending; 
      var changes = {}; 
      changes.modified = []; 
      for (var i in changeSet._modifiedItems) { 
       var item = null; 
       if (geoStore2._itemsByIdentity) { 
        item = geoStore2._itemsByIdentity[i]; 
       } else { 
        item = geoStore2._arrayOfAllItems[i]; 
       } 

       changes.modified.push(itemToJS(geoStore2, item)); 
      } 
      // 
      // send dojo.toJson(changes.modified) - Object to the server here 
      // 
      saveComplete(); 
     }; 

をしかしJsonRestStoreは、この種の仕事のために、より便利かもしれません。

関連する問題