2016-09-29 10 views
0

У меня есть smartclient ListGrid с некоторыми столбцами. В ListGrid есть текстовые поля с режимом редактирования (двойной щелчок для ввода) и логические поля.SmartClient ListGrid boolen поле без editMode (двойной щелчок)

Все, что мне нужно сделать, это отключить editMode для булевых полей (отключить двойной щелчок) и по-прежнему включить обычный «один клик» для изменения логического значения.

Двойной щелчок должен работать для других столбцов.

Любые идеи?

Мой код:

isc.ListGrid.create({ 
     ID: "ColumnsList", 
     saveLocally: true, 
     filterLocalData: true, 
     alternateRecordStyles: true, 
     canReorderRecords: true, 
     selectionAppearance: 'rowStyle', 
     autoFetchData: false, 
     showRollOver: true, 
     canRemoveRecords: true, 
     deferRemoval: false, 
     initWidget: function() { 
      this.Super('initWidget', arguments); 
      var me = this; 

      var fields = [ 
       {name: 'id', primaryKey: true, required: true, showIf: 'false', canEdit: false, canHide: false}, 
       { 
        name: 'name', 
        validOperators: [], 
        canEdit: true, 
        canHover: false, 
        canSort: false, 
        title: 'DB Column Name' 
       }, 
       { 
        name: 'primaryKey', 
        validOperators: [], 
        width: '12%', 
        canEdit: true, 
        canHover: true, 
        canSort: false, 
        //canToggle: true, 
        title: 'Primary Key', 
        type: 'boolean', 
        changed: function (form, item, value) { 
         // my logic to allow only one value per column is selected 
        } 
       } 
      ]; 
      me.setFields(fields); 
     } 
} 

ответ

0

Вы можете добавить recordDoubleClick: «вернуться ложным» на логическое поле, чтобы предотвратить обработчик сетки уровня от стрельбы.

isc.ListGrid.create({ 
    ID: "countryList", 
    width:550, height:224, alternateRecordStyles:true, 
    // use server-side dataSource so edits are retained across page transitions 
    dataSource: countryDS, 
    // display a subset of fields from the datasource 
    fields:[ 
     {name:"countryCode", title:"Flag", width:40, type:"image", imageURLPrefix:"flags/16/", imageURLSuffix:".png", canEdit:false}, 
     {name:"countryName"}, 
     {name:"continent"}, 
     {name:"member_g8", recordDoubleClick:"return false"}, 
     {name:"population"}, 
     {name:"independence"} 
    ], 
    autoFetchData: true, 
    canEdit: true 
}) 
0

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

isc.ListGrid.create({ 
    rowDoubleClick: function (record, recordNum, fieldNum) { 
     if (this.getField(fieldNum).type != "boolean") { 
      this.Super("rowDoubleClick", arguments); 
     } 
    }, 
    fields: [ 
     { name: "isActive", type: "boolean", canEdit: false }, 
     { name: "firstName", type: "text", canEdit: true }, 
     { name: "lastName", type: "text", canEdit: true }, 
    ], 
    data: [ 
     { isActive: false, firstName: "Alex", lastName: "Smith" }, 
     { isActive: true, firstName: "Jane", lastName: "Monroe" }, 
    ] 
}); 

Я не 100% я понял вопрос, но если вы ищете способ разрешить/запретить смену булевых полей, посмотрите на ListGridField.canToggle