ここ 2 日間、数行のコードをいじっていますが、何らかの理由で実行できません。
私が欲しいもの:
ユーザーはコンボボックスから関係を選択し、その後、最初のコンボボックスでフィルタリングされた人のリストから人を選択する必要があります。一人しかいない場合は、完全に選択する必要があります。複数ある場合は、コンボボックスを展開して、もちろん取得した人物のリストを表示します。とてもシンプルに聞こえます。
onRelationContactSelect() は、人が選択されたときに通常実行されるコードです。値を手動で設定すると select イベントがトリガーされないため、単純に手動で呼び出します。データがサーバーから確実に取得されるように、load イベントのコールバックにコードがあります。これは、最初に展開するか、レコードを選択するために必要です。
問題:
1 つのレコード (records.length == 1) がある場合、すべてが魅力的に機能します。複数のレコードがある場合、コンボボックス contactCombo の展開に失敗します。私は ExtJs の内部コードをかなりデバッグしましたが、その理由は焦点が合っていないからです。contactCombo.focus() を呼び出して何を試しても、フォーカスしません。だから広がらない。さらに厄介にするために、次のコードを使用して別のコンボボックスを展開できます。
function onRelationContactSelect() {
categorieStore.load({ callback: function(r, options, success) {
//debugger;
//categorieCombo.focus();
//categorieCombo.expand();
}});
categorieCombo.focus();
categorieCombo.expand();
}
ご覧のとおり、コールバックの外でfocus() と expand() を呼び出していますが、categorieStore のモードは「ローカル」です。categorieStore のデータは静的ですが、サーバーから取得されます。
コード:
function onRelatieSelect() {
contactStore.baseParams = {"relatieId": relatieCombo.value };
contactStore.load({callback: function(records, options, success) {
if(records.length == 1) {
contactCombo.setValue(records[0].get('Id'));
onRelationContactSelect();
} else {
contactCombo.clearValue();
contactCombo.focus();
contactCombo.expand();
}
}});
openTicketRelationLabel.show();
gridTicketRelatie.show();
ticketRelatieStore.load({ params: {relatieId:relatieCombo.value}});
SetRelatieInfo();
SetContractsInfo();
setSfHoursOsab();
showRelationNotifications(relatieCombo.value);
}
私は長年試してきましたが、コールバック ハンドラー内からコンボボックスにフォーカスすることはできず、コールバック ハンドラーの外にはまだデータがありません。
誰でも私を助けてもらえますか?