我想在一个单元格中显示两个选择框,或者将单独的单元格合并为一个。由于网格需要在一个单元格中显示两个值,并且这些值在编辑时变为两个不同的选择菜单,每个菜单从数组中获取它们的值。
我已经设置了一个示例代码,我想要实现它。此代码包含两个数组arr1
和arr2
。我希望这两个数组的数据显示在选择菜单中,就像它们在一个单元格中的顶部(在那个html表中)对齐,每个选择包含一个数组作为选择选项。
代码: jsFiddle code
可行吗?我正在使用JQgrid 4.6.0。
var data = [
[48803, "AAF1", "", "02200220", "OPEN", "D,AB", "D,AC", "E,AD", "F,AE", "D,AD"],
[48769, "AAD33", "", "77733337", "OPEN", "D,AB", "D,AB", "E,AD", "F,AD", "D,AB"]
];
var op1 = {
value: '1:D; 2:E; 3:F'
};
var op2 = {
value: '1:AB;2:AC; 3:AD; 4:AE'
};
var arr1 = ["D", "E", "F"];
var arr2 = ["AB", "AC", "AD", "AE"];
$("#grid").jqGrid({
datatype: "local",
height: 250,
colNames: ['ID', 'CPR', 'Blank', 'DeptID', 'Status', '01', '02', '03', '04', '05'],
colModel: [{
name: 'ID',
index: 'ID',
width: 50,
sorttype: "int"
}, {
name: 'CPR',
index: 'CPR',
editable: true,
width: 60,
sorttype: "date"
}, {
name: 'blank',
editable: true,
index: 'blank',
width: 10
}, {
name: 'DeptID',
index: 'DeptID',
editable: true,
width: 60,
sorttype: "float"
}, {
name: 'Status',
index: 'Status',
width: 60,
sorttype: "float"
}, {
name: '01',
index: '01',
editable: true,
edittype: "select",
formatter: myformatter,
editoptions: op2,
width: 30,
}, {
name: '02',
index: '02',
editable: true,
edittype: "select",
formatter: myformatter,
editoptions: op1,
width: 30,
}, {
name: '03',
index: '03',
editable: true,
edittype: "select",
formatter: myformatter,
editoptions: op1,
width: 30,
}, {
name: '04',
index: '04',
editable: true,
edittype: "select",
formatter: myformatter,
editoptions: op1,
width: 30,
}, {
name: '05',
index: '05',
editable: true,
edittype: "select",
formatter: myformatter,
editoptions: op1,
width: 30,
}, ],
'cellEdit': true,
caption: "Stack Overflow Example",
// ondblClickRow: function(rowid,iRow,iCol,e){alert('double clicked');}
});
var names = ['ID', 'CPR', 'Blank', 'DeptID', 'Status', '01', '02', '03', '04', '05'];
var mydata = [];
for (var i = 0; i < data.length; i++) {
mydata[i] = {};
for (var j = 0; j < data[i].length; j++) {
mydata[i][names[j]] = data[i][j];
}
}
for (var i = 0; i <= mydata.length; i++) {
$("#grid").jqGrid('addRowData', i + 1, mydata[i]);
}
function myformatter(cellvalue, options, rowObject) {
var array = cellvalue.split(",");
return array[0] + " " + array[1];
}
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/themes/base/jquery-ui.css" rel="stylesheet" />
<link href="http://trirand.com/blog/jqgrid/themes/ui.jqgrid.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://trirand.com/blog/jqgrid/js/i18n/grid.locale-en.js"></script>
<script src="http://trirand.com/blog/jqgrid/js/jquery.jqGrid.min.js"></script>
<table>
<tr>
<td>
<select>
<option>1</option>
<option>2</option>
</select>
</td>
</tr>
<tr>
<td>
<select>
<option>3</option>
<option>4</option>
</select>
</td>
</tr>
</table>
<table id="grid"></table>
更新 托尼的建议奏效了。我创建了一个新的小提琴,在编辑单元格时包含两个选择菜单。
JSFiddle:JSFIDDLE
答案 0 :(得分:1)
目前,实现此目的的一种方法是使用自定义编辑类型。
在此自定义编辑类型中,您需要使用custom_element属性创建两个选择,并使用custom_value属性获取和设置值。
有关详细信息,请参阅here(滚动到结尾以查看自定义元素)。您将看到如何使用自定义元素的示例。
我不确定cellEdit是不是一个很好的选择。也许您可以尝试使用内联或表单编辑选项。
最诚挚的问候,