2010-11-28 7 views
0

в этом примере: http://dev.sencha.com/deploy/dev/examples/grid/progress-bar-pager.html, если я хочу поместить кнопку удаления после того, как строка будет удалена из сетки, как я могу изменить или удалить эту запись из myData? Потому что, когда я меняю страницу или нажимаю кнопку o, я снова удаляю удаленные строки/строки. есть ли решение для изменения данных?Extjs, кнопка удаления

большое спасибо

ответ

4

Что-то вроде:

var grid = ...; // Your grid. 

var button = new Ext.Button({ 
    text: 'Delete row', 
    handler: function() { 
     var record = grid.getSelectionModel().getSelected(); 

     if (record !== undefined) { 
      grid.store.remove(record); 
     } 
    } 
}); 

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

proxy: new Ext.ux.data.PagingMemoryProxy(myData), 

вы можете попробовать удалить, что и положить

url: 'http://localhost/path/to/get/data' 

Обратитесь к документации для получения дополнительной информации: http://dev.sencha.com/deploy/dev/docs/?class=Ext.data.Store

+0

ваша идея его хорошая, но я хочу работать с деньгами, и я не хочу перезагружать базу данных каждый раз, когда я удаляю продукт. У меня также есть функция, которая при щелчке удаляет строку из моей базы данных, но я не хочу перезагружать базу данных. Если у вас есть 10-20 продукт, то он ОК, но если у вас есть 10.000 ... – cosy 2010-11-29 00:37:28

1

Если посмотреть через источник этого примера , он загружает данные из массива, который жестко закодирован:

Ext.onReady(function(){ 

     var myData = [ 
       ['3m Co',71.72,0.02,0.03,'9/1 12:00am'], 
       ['Alcoa Inc',29.01,0.42,1.47,'9/1 12:00am'], 
       ['Altria Group Inc',83.81,0.28,0.34,'9/1 12:00am'], 
       // ... 
       ['Verizon Communications',35.57,0.39,1.11,'9/1 12:00am'], 
       ['Wal-Mart Stores, Inc.',45.45,0.73,1.63,'9/1 12:00am'] 
     ]; 

myData воссоздается из этого статического определения каждый раз, когда загружается страница, поэтому изменения не сохраняются между обновлениями.

Вам необходимо написать два сценария на стороне сервера (например, скрипты PHP). Один выводит данные не удаленных записей в формате JSON или XML. Другой удаляет записи из базы данных по идентификатору.

Вот учебник, посвященный написанию PHP-скрипта «getter» и соответствующего кода Ext JS для отображения сетки данных по технологическим продуктам: http://www.devarticles.com/c/a/JavaScript/EXT-JS-Passing-Live-Data/. Это охватывает только первый скрипт (тот, который извлекает данные из базы данных и выводит их в формате JSON), но он должен вас поймать. Посмотрите на переопределение обратного вызова remove в хранилище с функцией, которая выдает запрос AJAX ко второму сценарию (тот, который удаляет записи из базы данных по ID).

Смежные вопросы