jqxgrid 基于另一列上的值的可编辑属性
Posted
技术标签:
【中文标题】jqxgrid 基于另一列上的值的可编辑属性【英文标题】:jqxgrid editable properties based on a value on another column 【发布时间】: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 作为默认属性。但是,正如您在给定示例中看到的那样,是否可以根据另一列的值设置列的可编辑属性。
【问题讨论】:
【参考方案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' 事件,从而产生不良结果。
通过这样做,可以动态决定可以为不同的行编辑哪一列
【讨论】:
以上是关于jqxgrid 基于另一列上的值的可编辑属性的主要内容,如果未能解决你的问题,请参考以下文章
两列上的 DENSE_RANK,其中一列是不同的值,另一列是重复的