本來也無事,但想說既然要新增資料,乾脆更人性化一點,幫使用者把焦點移到輸入格中,沒想到悲劇就這樣發生了...
程式碼如下
function newproblem() {
problem_dg.datagrid('appendRow',{
syssource: 'I',
datadttm: new DateUtilities().adTodayDatetime(),
pid:{{ sel_admbasic_seq }},
active: '',
inactiveremarkdate: '',
progressionnote: 'Subjective:\n\n\nObjective:\n\n\nImpression:\n\n\nRx Plan:'
});
var sel_rowIndex = problem_dg.datagrid('getRows').length-1;
problem_dg.datagrid('selectRow', sel_rowIndex);
problem_dg.datagrid('beginEdit', sel_rowIndex);
var activeEditor = problem_dg.datagrid('getEditor', {index: sel_rowIndex, field: 'active'});
$(activeEditor.target).textbox('textbox').focus();
}
原有資料再新增一筆時...
原有資料再新增第二筆時...
後來新增的這兩筆資料都無法autoSave,相關的event也都失效了。


追蹤easyui程式碼發現,beginEdit 並不會觸發 datagrid的特定事件,因此無法賦予正確的 editIndex值。
改寫如下就恢復預期中的功能了
function newproblem() {
progressionnote.textbox('setValue', '');
inactiveremarkdate.textbox('setValue', '');
problem_dg.datagrid('appendRow',{
syssource: 'I',
datadttm: new DateUtilities().adTodayDatetime(),
pid:{{ sel_admbasic_seq }},
active: '',
inactiveremarkdate: '',
progressionnote: 'Subjective:\n\n\nObjective:\n\n\nImpression:\n\n\nRx Plan:'
});
var sel_rowIndex = problem_dg.datagrid('getRows').length-1;
problem_dg.datagrid('selectRow', sel_rowIndex);
problem_dg.datagrid('beginEdit', sel_rowIndex);
problem_dg.datagrid('options').editIndex = sel_rowIndex;
var activeEditor = problem_dg.datagrid('getEditor', {index: sel_rowIndex, field: 'active'});
$(activeEditor.target).textbox('textbox').focus();
}


沒有留言:
張貼留言