Я не в курсе Flexigrid, но должен быть лучший способ!
Вместо того, чтобы устанавливать все эти переменные, почему бы не создать отображение и использовать его для заполнения формы?
Попробуйте что-то вроде этого:
function editbox(com, grid) {
if (com == 'Edit') {
if ($('.trSelected').length > 0) {
var mapGridToForm = //Name Child index Form id
[ ['id', 1, 'EB_id' ],
['location', 2, '???' ],
['customer', 3, '???' ],
['address', 4, 'EB_address', 'select'],
['service', 5, 'EB_service', 'select'],
['department', 6, 'EB_dept' ],
['status', 7, 'EB_status' ],
['custref', 8, 'EB_custref' ],
['size', 9, '???' ],
['authorisation', 10, '???' ],
['intakedate', 11, '???' ],
['destroydate', 12, '???' ]
];
var baseNode = $('tr.trSelected');
$("#boxeditform").dialog('open');
//--- Populate the form.
for (J = mapGridToForm.length - 1; J >= 0; --J) {
var row = mapGridToForm[J];
if (row.length > 3) { //--- It's a select control.
// NOTE: Normally, we use the `value` attribute for selects.
var gridVal = baseNode.find ('td:nth-child(' + row[1] + ') select:selected').text ();
//--- Blank the value if it's unselected
if (/^Select a/i.test (gridVal) )
gridVal = "";
$('#' + row[2] ).val (gridVal);
}
else {
//--- Get the value from the grid and set the form control with it.
var gridVal = baseNode.find ('td:nth-child(' + row[1] + ') div').text ();
$('#' + row[2] ).val (gridVal);
}
}
} else {
jAlert('you must select a row');
}
}
}
Обратите внимание, что val()
интеллектуально выбирает выбранное значение из <select>
элементов управления.