2012-04-11 2 views
0

나는 이틀 동안 몇 줄의 코드를 사용하여 봤는데 어떤 이유로 그 코드를 실행할 수 없습니다.초점을 맞추지 못해서 콤보 상자가 확장되어

내가 원하는 것은 :

사용자는 첫 번째 콤보 필터링 사람의 목록에서 사람을 선택해야합니다 이후 콤보 상자에서 관계를 선택합니다. 한 명만있는 경우 철저히 선택해야합니다. 그것이 하나 이상 있다면, 나는 콤보 박스를 확장하고 당연히 검색된 사람들의 목록을 보여주고 싶다. 꽤 간단하게 들립니다.

onRelationContactSelect()는 사람을 선택할 때 일반적으로 실행되는 코드입니다. select 이벤트는 수동으로 값을 설정할 때 트리거되지 않기 때문에 간단히 호출합니다. 데이터가 서버에서 검색되도록로드 이벤트의 콜백에 코드가 있습니다. 그것은 처음부터 확장하거나 레코드를 선택하는 데 필요합니다.

문제 : 나는 하나 개의 레코드 (records.length == 1)가 때

모든 매력처럼 작동합니다. 두 개 이상의 레코드가 있으면 combobox contactCombo가 확장되지 않습니다. ExtJs 내부 코드를 통해 꽤 많은 디버깅을했는데 그 이유는 포커스가 없다는 것입니다. contactCombo.focus()를 호출하여 무엇을 시도하든간에 이 아닌 포커스가 있습니다. 따라서 확장되지 않습니다.

function onRelationContactSelect() { 
categorieStore.load({ callback: function(r, options, success) { 
    //debugger; 
    //categorieCombo.focus(); 
    //categorieCombo.expand(); 
}}); 
categorieCombo.focus(); 
categorieCombo.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); 
} 

내가 나이를 위해 노력했지만, 내가 단순히 콜백 핸들러 내에서 콤보를 초점을 맞출 수 없습니다 콜백 핸들러의 외부 나는 아직 데이터가없는 것 같다.

아무도 도와주세요.

답변

관련 문제