有一种方法可以在单击“编辑”链接时获取用于填充下拉列表的 JSON 数组,这种方法是通过“fnServerData”内 AJAX 调用的“完整”而不是“成功”属性获取 JSON “ 像这样:
"fnServerData": function(sSource, aoData, fnCallback, oSettings) {
oSettings.jqXHR = $.ajax({
"dataType": 'json',
"type": "POST",
"url": sSource,
"data": "opcionesMenu=ini",
"success": fnCallback,
"complete": function(resp) {
jsonSelects = JSON.parse(resp.responseText);
}
});
}
在我的示例中,“jsonSelects”是一个全局变量,我可以在代码中的任何位置获取 JSON,然后在编辑时使用 JSON 来填充下拉列表,如下所示:
function editRow(oTable, nRow)
{
var aData = oTable.fnGetData(nRow);
var jqTds = $('>td', nRow);
//Dropdown list
jqTds[2].innerHTML = '<select id="selMenu"></select>';
for(i = 0; i < jsonSelects.menu.length; i++) {
$('#selMenu').append('<option value=' + jsonSelects.menu[i].cod_elemento + '>' + jsonSelects.menu[i].nombre_elemento + '</option>');
}
//Dropdown list
jqTds[3].innerHTML = '<select id="selIdioma"></select>';
for(i = 0; i < jsonSelects.idioma.length; i++) {
$('#selIdioma').append('<option value=' + jsonSelects.idioma[i].codigo_idioma + '>' + jsonSelects.idioma[i].nombre_idioma + '</option>');
}
// Input text
jqTds[4].innerHTML = '<input value="' + aData["opcion"] + '" type="text">';
当您单击“编辑”链接时,您将在所需字段中看到一个下拉列表。