【问题标题】:jqxgrid editable properties based on a value on another columnjqxgrid 基于另一列上的值的可编辑属性
【发布时间】:2018-11-13 12:53:14
【问题描述】:

参考下面给定链接中提供的代码 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'
     }]
 });

如何根据Order Date的值设置列数量和价格的列属性??

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 作为默认属性。但是,正如您在给定示例中看到的那样,是否可以根据另一列的值设置列的可编辑属性。

【问题讨论】:

    标签: javascript jqxgrid jqxwidgets


    【解决方案1】:

    所以经过几次尝试,我终于想出了如何使用“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' 事件,从而产生不良结果。

    通过这样做,可以动态决定可以为不同的行编辑哪一列

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-02
      • 2014-04-19
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      • 1970-01-01
      相关资源
      最近更新 更多