DataGrid 編輯行中,Combobox A (NMJ04) 選值後,聯動加載 Combobox B (NMJ05) 並回填 TextBox C (NMJ06)。
onSelect: function(record) {
// 1. 獲取當前編輯行索引
var row = $('#dd').datagrid('getSelected');
var rowIndex = $('#dd').datagrid('getRowIndex', row);
// 2. 獲取 Combobox B 編輯器(注意:返回對象需 .target 轉 jQuery)
var editorB = $('#dd').datagrid('getEditor', { index: rowIndex, field: 'NMJ05' });
var $comboB = $(editorB.target);
// 3. 清空並重新加載 Combobox B
$comboB.combobox('clear');
var url = '/handler/spouseinfo.ashx?flag=getValueNMK06&t=' + record.id;
$comboB.combobox('reload', url);
// 4. 異步獲取 NMJ06 值並回填 TextBox
$.ajax({
url: '/handler/getNMJ06.ashx', // 返回純文本或 JSON {value: '...'}
type: 'POST',
data: { id: record.id },
success: function(val) {
var editorC = $('#dd').datagrid('getEditor', { index: rowIndex, field: 'NMJ06' });
$(editorC.target).val(val); // TextBox 直接 val()
},
error: function(xhr) { console.error('NMJ06 獲取失敗', xhr); }
});
}
| 點 | 說明 |
|---|---|
getEditor 返回值 | 對象 {target: DOM, actions: ..., type: 'combobox'},需 $(editor.target) 包裝 |
| Combobox reload | combobox('reload', url) 會發起請求並自動解析 JSON 數據源 |
| 新增行 row 為 null | 新增時 getSelected() 返回新行數據(含默認值),非 null。若確為 null,用 getEditor 直接操作 |
| 編輯行初始化 | onBeforeEdit 中預載 Combobox 數據源,避免用戶等待 |