Редактируемые свойства jqxgrid, основанные на значении в другом столбце - PullRequest
0 голосов
/ 04 июня 2018

Со ссылкой на код, доступный по данной ссылке ниже http://jsfiddle.net/tzHXR/

var data = generatedata(500);
 var source = {
     localdata: data,
     datafields: [{
         name: 'firstname',
         type: 'string'
     }, {
         name: 'lastname',
         type: 'string'
     }, {
         name: 'productname',
         type: 'string'
     }, {
         name: 'date',
         type: 'date'
     }, {
         name: 'quantity',
         type: 'number'
     }, {
         name: 'price',
         type: 'number'
     }],
     datatype: "array"
 };

 var adapter = new $.jqx.dataAdapter(source);
 $("#jqxgrid").jqxGrid({
     width: 500,
     theme: 'energyblue',
     editable: true,
     source: adapter,
     sortable: true,
     columns: [{
         text: 'First Name',
         datafield: 'firstname',
         width: 90
     }, {
         text: 'Last Name',
         datafield: 'lastname',
         width: 90
     }, {
         text: 'Product',
         datafield: 'productname',
         width: 170
     }, {
         text: 'Order Date',
         datafield: 'date',
         width: 160,
         cellsformat: 'dd-MMMM-yyyy'
     }, {
         text: 'Quantity',
         datafield: 'quantity',
         width: 80,
         cellsalign: 'right'
     }, {
         text: 'Unit Price',
         datafield: 'price',
         cellsalign: 'right',
         cellsformat: 'c2'
     }]
 });

Как установить свойство столбца количества и цены столбца на основе значения даты заказа ??

Example: 
cellbeginedit: function (row) {
    var Orderdate = $("#jqxgrid1").jqxGrid('getcellvalue', row, 'date');
    if (Orderdate < '1-June-2018'){
    $('#jqxgrid').jqxGrid('setcolumnproperty', 'quantity', 'editable', false);  
    $('#jqxgrid').jqxGrid('setcolumnproperty', 'price', 'editable', false);
    }

}

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

1 Ответ

0 голосов
/ 06 июня 2018

Итак, после нескольких попыток я наконец-то понял, как это сделать, используя 'cellselect'

$("#jqxgrid").on('cellselect', function (event) {
    $('#jqxgrid1').jqxGrid('setcolumnproperty','quantity', 'editable', true);
    $('#jqxgrid1').jqxGrid('setcolumnproperty','price', 'editable',true);
    var datafield = event.args.datafield;
    var rowindex = event.args.rowindex;
    var date = $("#jqxgrid").jqxGrid('getcellvalue',rowindex,'date');
    if (date < '1-June-2018' ){
        $('#jqxgrid1').jqxGrid('setcolumnproperty','quantity', 'editable', false);
        $('#jqxgrid1').jqxGrid('setcolumnproperty','price', 'editable', false);
    }

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

Таким образом можно динамически решить, какой столбец можно редактировать для другой строки.

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