更改一个 cell
中的值时,我必须在其他单元格中加载 array of values
(如下拉)。
我不知道如何将数组加载到单元格中。
我尝试的是:
afterChange: function(changes, source) {
if(!changes) {
return;
}
$.each(changes, function(index, element) {
var row = element[0];
var col = element[1];
var oldVal = element[2];
var newVal = element[3];
if(col==6) {
tsContainer.setDataAtCell(row, 1, pjtArray);
}
});
}
在这里我使用了setDataAtCell
方法,它将数组加载为字符串(逗号分隔)。
我尝试了
var arr = [['123'],['dfg'],['678'],['asd']];
tsContainer.populateFromArray(row, 1, arr);
,但它加载每个单元格中的每个元素。
我必须在一个单元格中显示所有元素作为下拉级。
在 handentbale 列属性中,我们可以将数组设置为source
。我需要这样的东西。
由于数据是动态加载的,所以我必须在afterChange
事件中写下此。
请帮助我..
您的猜测是正确的,您需要更改列的属性来修改下拉值。
让我们进行以下初始数据集:
myData = [
['source1', 'option1'],
['source1', 'option3'],
['source2', 'option5'],
['source2', 'option7']
],
以及以下下拉值:
selectSource = ['source1','source2'],
source1 = ['option1','option2','option3','option4'],
source2 = ['option5','option6','option7','option8'],
和假设您要根据第1列的值修改第2列的下拉值(如果第1列等于'source1',则第2列的下拉值将为阵列source1,如果它等于'source2',第2列的源将是数组源2):
- 使用getCellmeta(行,列)获取单元格的属性
- 访问源并为您的新数组更改
参数行是当前行,您触发事件后换次, value 是此行的第1列的值:
function setDropDownSource(row, value) {
var instance = this;
var cellPropertiesOption = instance.getCellMeta(row,1); // Column 1 is your 2nd column
if (value == 'source1')
cellPropertiesOption.source = source1;
else if (value == 'source2')
cellPropertiesOption.source = source2;
else
cellPropertiesOption.source = null;
}
此功能在换次事件中称为:
:$.each(changes, function (index, element) {
var rowIndex = element[0];
var columnIndex = element[1];
var newValue = element[3];
if (columnIndex == 0) { // Checking if the event has been triggered within the column SourceSelector
setDropDownSource.call(instance, rowIndex, newValue);
instance.render();
}
});
我还添加了一个 AfterloadData 事件,以在加载页面时设置第二列的每个行的源。但是我也想在更改源时清空单元格的当前值。因此,如果要在更改源时需要一个单元格或不为空的单元格,则可以找到该函数的附加参数:
:if (!init)
instance.setDataAtCell(row,1,"");
您可以在此JSfiddle中找到完整的工作示例。