Добавление записи в магазин - PullRequest
0 голосов
/ 01 марта 2011

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

var a = gridPanel.getSelectionModel().getSelectedCell();

    var rec = store.getAt(a[0]).copy();
    store.addSorted(rec);
    alert (store.getAt(1).get('date'));

Но хранилище и сетка не обновляются.В предупреждении есть ошибка - невозможно вызвать метод undefined.

В чем здесь проблема?

Ответы [ 2 ]

1 голос
/ 02 марта 2011

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

Если вы сгенерируете и примените новый идентификатор к скопированномузапись, прежде чем добавить его в магазин, он должен работать.Следующий код генерирует новый идентификатор в записи, передаваемой в качестве аргумента.Проверьте документацию Ext.data.Record.copy .

Ext.data.Record.id(rec);
0 голосов
/ 02 марта 2011

Несколько вещей, которые должны делать большинство разработчиков JavaScript:

  1. Используйте firebug, если вы включите break на всех ошибках, это, вероятно, покажет вам, что store.get (1) возвращает undefing и вызывает ошибку, когда вы пытаетесь вызвать функцию на undefined.

  2. Теперь, когда у вас есть firebug, используйте операторы console.log () поверх window.alert (). С console.log вы можете увидеть его, он также хорош для асинхронных событий и событий мыши.

Что касается вашей проблемы: Вызов record.copy () и вставка его в хранилище вызовет проблемы, если вы не дадите ему идентификатор. Если у вас есть firebug и вы просматриваете код, вы наткнетесь на это:

if(this.containsKey(key)){
 this.suspendEvents();
 this.removeKey(key);
 this.resumeEvents();
 }

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

var rec = store.getAt(a[0]).copy();
var id = Ext.data.Record.id(id);
rec.id = id;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...