내 맞춤 목록에 이상한 문제가 있습니다.플렉스 목록 선택 및 렌더링 문제가 발생했습니다.
나는 직원 목록을 보여줄 필요가있는 목록을 정의했다. 내 사용자 지정 목록에서 concrete ID로 직원을 선택 (강조 표시)하기 위해 selectedId 속성을 제공하려고합니다. 목록은 [http://blog.flexdevelopers.com/2010/02/flex-examples-binding-value-to-combobox.html]에 따라 생성됩니다.
이 내 사용자 지정 목록에 대한 코드입니다 ...
<mx:List ....>
<mx:Script>
<![CDATA[
private var _selectedId:int;
public function get selectedId():int
{
//...
}
public function set selectedId(id:int):void
{
_selectedId=id;
invalidateProperties();
invalidateDisplayList();
}
override protected function commitProperties():void
{
super.commitProperties();
if(dataProvider!=null)
setSelectedId();
}
protected function setSelectedId():void
{
var subordinates:ArrayCollection=dataProvider as ArrayCollection;
var subordinate:EmployeeSimpleDTO=null;
for(var i:int=0;i<subordinates.length;i++)
{
var sub:EmployeeSimpleDTO=(subordinates.getItemAt(i))as EmployeeSimpleDTO;
if(sub.employeeId==_selectedId)
{
subordinate=sub;
_selectedId=sub.employeeId;
break;
}
}
selectedItem=subordinate;
}
override protected function collectionChangeHandler(event:Event):void
{
super.collectionChangeHandler(event);
invalidateProperties();
invalidateDisplayList();
}]]>
<mx:Script>
<mx:itemRenderer>
<mx:Component>
<view:SubordinatesListItem employeeId = "{data.employeeId}"
employeeName = "{data.employeeName}"
employeeSurname = "{data.employeeSurname}"
employeeUsername = "{data.employeeUsername}"/>
</mx:Component>
</mx:itemRenderer>
</mx:List>
편집
이 내가 selectedId 재산에 대한 몇 가지 값을 바인딩 내 아이템 렌더러 내 코드에서
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="100%">
<mx:Script>
<![CDATA[
[Embed(source="/assets/employeeIcon.png")]
[Bindable]
private var employeeIcon:Class;
[Embed(source="/assets/infoIcon.png")]
[Bindable]
private var infoIcon:Class;
//-----------------------------
// private var declarations
//-----------------------------
private var _employeeId:int;
public function get employeeId():int
{
return _employeeId;
}
public function set employeeId(id:int):void
{
_employeeId=id;
}
private var _employeeName:String;
[Bindable]
public function get employeeName():String
{
return _employeeName;
}
public function set employeeName(name:String):void
{
_employeeName=name;
}
private var _employeeSurname:String;
[Bindable]
public function get employeeSurname():String
{
return _employeeSurname;
}
public function set employeeSurname(surname:String):void
{
_employeeSurname=surname;
}
private var _employeeUsername:String;
[Bindable]
public function get employeeUsername():String
{
return _employeeUsername;
}
public function set employeeUsername(username:String):void
{
_employeeUsername=username;
}
private function dispatchShowSubordinateDetails():void
{
dispatchEvent(new Event("showSubordinateDetails",true));
}
]]>
</mx:Script>
<mx:Metadata>
[Event(name="showSubordinateDetails", type="flash.events.Event")]
</mx:Metadata>
<mx:Image source="{employeeIcon}" scaleX="0.35" scaleY="0.35"/>
<mx:Label text="{employeeName} {employeeSurname}"/>
<mx:Label text=" [{employeeUsername}]" color="#8D8D8D"/>
<mx:Spacer width="100%"/>
<mx:LinkButton icon="{infoIcon}" click="dispatchShowSubordinateDetails()" width="30"/>
</mx:HBox>
을위한 코드입니다 사용자 정의 목록 (목록은 popup - TitleWindow 내에 있습니다). 단지 최대 selectedId으로 동일한 ID를 가지고 내 사용자 지정 목록, 직원,의, 가 시각적으로 선택하지 않은 최초의 쇼에 지금
, 목록에서을 (컬러). 내가 시각적으로 말했을 때 나는 내 custom list의 selectedItem 또는 selectedIndex 속성을 취할 때 올바른 객체와 색인을 얻는다는 것을 의미한다., 내가 선택해야합니다 항목 위에 마우스를 출시하는 중요한 첫 공연 업, 에, 그것은 내가 출시 후 (그녀는해야한다로) 선택된 상태로 유지 훨씬 더.
이후 show ups는 예상대로 작동합니다.
나는 내 문제에 대해 "플라스틱"설명을하려고 했으므로, 약간의 정보를 주시면 제발 실례합니다. 나는 그 문제가 무엇인지 알지 못한다. 어떤 아이디어?
문제를 재현 할 수 없으므로 문제를 재현 할 수있는 몇 가지 샘플 코드를 제공해 주시겠습니까? 사용자 정의'itemRenderer'를 사용하고 있습니까? – bmleite
@bmleite - 예 맞춤 렌더러가 있습니다 (질문이 업데이트 됨). 나는 (제한된 공간 때문에) 내 코드 컨텍스트를 간소화했으며, 솔직히 말해서 나는 간단한 시나리오에서 문제를 반복하는 데 성공하지 못했다. 확실히, 문제는 일반적으로 내 코드와 관련이 있습니다. 그러나 리뷰의 어느 부분을 검토해야할지 모르겠습니다. – slomir
사용자 지정 목록이 포함 된 구성 요소를 격리하고 양식, 목록 등을 채우기 위해 일부 정적 데이터를 사용하여 문제를 복제하십시오. 문제를 찾는 것이 최선책 인 것 같습니다. 먼저 코드를 보지 않고 검토해야하는 부분을 말하기는 어렵습니다. – bmleite