2012-01-04 3 views
2

У меня есть редактор Grid и магазин с настраиваемым типом.Поле хранилища настраиваемого типа в редакторе Сетка неправильно отображена

магазин:

var sourceStore = new Ext.data.JsonStore({ 
    url: hp, 
    storeId: 'labels-data-store', 
    idProperty: 'ID', 
    root: 'results', 
    fields: [{ 
     name: 'ID', 
     type: 'int' 
    }, { 
     name: 'LanguageID', 
     type: 'int' 
    }, { 
     name: 'KeyID', 
     type: 'int' 
    }, { 
     name: 'Value', 
     type: 'string' 
    }, { 
     name: 'ToolTip', 
     type: 'string' 
    }, { 
     name: 'LanguageName', 
     type: 'string' 
    }, { 
     name: 'KeyInfo', 
     type: 'LanguageKeyInfo' 
    }, 
    CUSTOM TYPE HERE !! !{ 
     name: 'ServerComments', 
     type: 'string' 
    }] 
}); 

Editor Сетка:

var sourceGrid = new Ext.grid.EditorGridPanel({ 
    id: 'source-grid', 
    region: 'center', 
    title: localize.sourceView, 
    iconCls: 'source-view-title', 
    store: sourceStore, 
    trackMouseOver: true, 
    disableSelection: false, 
    loadMask: true, 
    split: true, 
    stripeRows: true, 
    border: true, 
    autoExpandColumn: 'label', 
    cm: sourceColModel, 

    // customize view config 
    viewConfig: { 
     forceFit: true, 
     enableRowBody: true, 
     showPreview: false, 
     emptyText: localize.noRecordsFound 
    }, 

    sm: new Ext.grid.RowSelectionModel({ 
     singleSelect: false, 
     moveEditorOnEnter: true 
    }) 
}); 

реализация Custome Тип:

LanguageKeyInfo = function() { 
    this.ID = arguments[0]; 
    this.Value = arguments[1]; 
    this.Description = arguments[2]; 
} 

Ext.data.Types.LANGUAGEKEYINFO = { 
    convert: function (v, data) { 

     if (!data) { 
      return null; 
     } 

     if (!data.KeyInfo) { 
      return null; 
     } 

     return new LanguageKeyInfo(
     data.KeyInfo.ID, 
     data.KeyInfo.Value, 
     data.KeyInfo.Description); 
    }, 

    sortType: function (key) { 
     return key.ID; 
    }, 

    type: 'LanguageKeyInfo' 
} 

Источник Колонка Модель:

var sourceColModel = new Ext.grid.ColumnModel({ 
    columns: [{ 
     header: 'ID', 
     dataIndex: 'ID', 
     width: 50, 
     hidden: true, 
     sortable: true 
    }, { 
     header: 'Language ID', 
     dataIndex: 'LanguageID', 
     width: 50, 
     hidden: true, 
     sortable: true 
    }, { 
     header: 'Language', 
     dataIndex: 'LanguageName', 
     width: 20, 
     hidden: true, 
     sortable: true 
    }, { 
     header: 'Key ID', 
     dataIndex: 'KeyID', 
     width: 30, 
     hidden: true, 
     sortable: true 
    }, { 
     header: 'Key', 
     dataIndex: 'KeyValue', 
     width: 40, 
     sortable: true, 
     editor: new Ext.form.TextField({ 
      allowBlank: false, 
      maxLength: 200 
     }) 
    }, { 
     header: 'Label', 
     dataIndex: 'Value', 
     sortable: true, 
     editor: new Ext.form.TextField({ 
      allowBlank: false, 
      maxLength: 500 
     }), 
     renderer: function (sc) { 
      var lanID = getSelectedLanguageID() ? getSelectedLanguageID() : 1; 
      switch (parseInt(lanID)) { 
       case 2: 
        return '<div class="rtl">' + sc + '</div>'; 
       default: 
        return sc; 
      } 
     } 
    }, { 
     header: 'Description', 
     dataIndex: 'KeyDescription', 
     width: 30, 
     editor: new Ext.form.TextField({ 
      allowBlank: true, 
      vtype: 'englishOnly', 
      maxLength: 100 
     }) 
    }, { 
     header: 'Tool Tip', 
     dataIndex: 'ToolTip', 
     width: 80, 
     sortable: true, 
     editor: new Ext.form.TextField({ 
      allowBlank: true, 
      maxLength: 200 
     }) 
    }] 
}); 

Когда я начинаю редактировать первую строку столбца, значением текстового поля является [object, object], что означает, что сетка передает объект KeyInfo в значение текстового поля.

Как я могу отправить одно из свойств KeyInfo в текстовое поле и отобразить его в записи магазина?

+0

Вы можете показать определение модели столбца для поля настраиваемого типа? – dbrin

ответ

0

Для начала ваш dataIndex не ссылается на действительное отображение записи: dataIndex: 'KeyValue',, вероятно, следует dataIndex: 'KeyInfo', Во-вторых, я не думаю, что есть какая-либо поддержка пользовательских типов на сетке редакторов. Возможно, я ошибаюсь.

+0

Вы имеете право на dataIndex. Я не нашел никакой информации о поддержке сетки для пользовательских типов. Было бы неплохо, если бы можно было немного осветить тему. спасибо за ваш повтор. – AMember