Extjs에서 Combobobox 표시 값 및 실제 값 할당 문제 해결

1840 단어
Extjs를 사용한 친구는 Extjs의Combobobobox 구성 요소에 두 개의 값으로 구성되어 있다는 것을 알고 있다고 믿습니다.하나는 displayField입니다. 이것은 우리에게 보여주는 것이고, 다른 하나는 진정으로 시스템에 사용되는 valueField입니다. 예를 들면 좀 더 적절하겠습니다.만약 우리가 밑에 있는 목록이 회사가 선택한 것이라면, 우리가 본 옵션의 값은 회사의 이름이어야 하고, 실제 시스템에 제출된 값은 회사의 ID나 인코딩 같은 것일 수도 있다.extjs의combobobox도 같은 이치이지만 setValue () 함수만 제공합니다. 우리가 호출할 때 발생하는 결과는 표시된 값과 실제 값이 id이거나 같은 이름입니다.같은 id일 때 시스템이 정상적으로 작동할 수 있지만, 이렇게 하면 사용자의 상호작용이 우호적으로 나타난다.모두가 너의 하나, 둘, 셋을 이해하지 못할 거라고 믿는다.
인터넷에서 찾아보니 setvalue ()/set Raw Value (Mixed value) 로 각각 완성할 수 있다고 했는데 사실 한 번 해봤지만 성공하지 못했어요.API에 설명되어 있습니다.
setRawValue( Mixed value ) : Mixed
 DOM 。 setValu...
 DOM 。 setValue。Sets the underlying DOM field's value directly, bypassing validation. To set the value with validation see setValue.

만약 내가 잘못 이해하지 않았다면 여기는 검증 값을 건너뛰는 데 쓰였을 것이다. 즉, 검증이 통과할 수 없는 값이 이 함수를 통해 설정될 수 있기 때문이다.(이곳에서 왜 Ext 공식이 이런 함수를 주었는지 모르겠다. 검증할 수 없는 것인데 왜 값을 부여해야 하는지 모르겠다.
Firebug 분석을 사용하여 생성된 페이지를 분석할 때 실제 값은 숨겨진 input로 배치된 것을 발견합니다.그렇다면 Ext.get () 방법으로 해 보겠습니다. 결국 Ext.get () 과form을 사용할 수 있다는 것을 발견했습니다.getForm().findField () 는 각각 값을 부여하고 Ext.get () 을 고려하여 새로운 메모리 손실을 초래할 수 있으므로 Ext.fly () 로 대체합니다. 최종 코드는 다음과 같습니다.
    win.form.getForm().findField('assistInfo.pid.id')
        .setValue(config.curr.node.text);
    Ext.fly('assistInfo.pid.id').dom.value=config.curr.node.id;

2010-10-08의 최신 수정은 상기 방법에 문제가 있습니다.cbx가 초점을 얻고 수정되지 않았을 때, 떠날 때,displayField의 값을valueField에 채우면 시스템 오류가 발생합니다.비교적 좋은 해결 방법은 Ext.data를 사용하는 것이다.Record.create ({}) 는combobo의 데이터 대상을 구축하고, 이 값을combobo의 데이터 스토어에 채우고, 마지막으로setvalue를 호출하면combobobox의 초기 값 문제를 완벽하게 해결할 수 있습니다.
Ext.getCmp('userid').setRawValue(otherName);
Ext.getCmp('userid').setValue(otherId);
 name  id 

좋은 웹페이지 즐겨찾기