2017-12-05 31 views
1

많은 사람들이 이미 이런 유형의 질문을 알고 있지만 그 게시물은 Flex Framework의 ItemRenderer와 ItenEditor 사이의 실제 차이에 대해 더 많은 정보를 제공하지 못했습니다.ItemRenderer가 Flex 4의 ItemEditor와 다른 점은 무엇입니까?

아시다시피 ItemRenderer는 주로 시각적 요소를 표시하는 데 사용되고 ItemEditor는 주로 편집 목적으로 사용됩니다.

그래서 나는 그 사이의 차이를 찾기 위해 예를 다음 시도 :

itemRenderer를 들어

나는 다음과 같은 코드를 사용 :

<mx:DataGrid dataProvider="{initDG}"> 
    <mx:columns> 
     <mx:DataGridColumn headerText="Artist" dataField="Artist"/> 
     <mx:DataGridColumn headerText="Album" dataField="Album"/> 
     <mx:DataGridColumn headerText="Price" dataField="Price"> 
      <mx:itemRenderer> 
       <fx:Component> 
        <mx:TextInput restrict="0-9" maxChars="10" /> 
       </fx:Component> 
      </mx:itemRenderer> 
     </mx:DataGridColumn> 
     <mx:DataGridColumn headerText="Cover" dataField="Cover"/> 
    </mx:columns> 
</mx:DataGrid> 

을 다음과 같이 나는 결과를 얻었다 :

enter image description here

여기서 Price 필드는 편집 가능한 것으로 표시됩니다.

<mx:DataGrid dataProvider="{initDG}"> 
    <mx:columns> 
     <mx:DataGridColumn headerText="Artist" dataField="Artist"/> 
     <mx:DataGridColumn headerText="Album" dataField="Album"/> 
     <mx:DataGridColumn headerText="Price" dataField="Price"> 
      <mx:itemEditor> 
       <fx:Component> 
        <mx:TextInput restrict="0-9" maxChars="10" /> 
       </fx:Component> 
      </mx:itemEditor> 
     </mx:DataGridColumn> 
     <mx:DataGridColumn headerText="Cover" dataField="Cover"/> 
    </mx:columns> 
</mx:DataGrid> 

을 다음과 같이 나는 결과를 얻었다 :

enter image description here

그러나 여기 가격 필드가 편집 가능한 비입니다 다음과 같이

그리고 다시 나는의 itemEditor와 동일한 코드를 시도했다.

그래서 이러한 컨트롤을 처음 접했을 때 나는 왜 그것이 일어나고 있는지 혼란스러워하고 있습니다. 왜 그 필드를 편집 할 수 없는지 ItemEditor를 사용한 후.

아무도 그 이유가 무엇인지 알면이 두 컨트롤에 대한 자세한 내용을 이해할 수 있도록 도와주세요.

답변

2

첫 번째 경우에는 편집 가능한 필드를 렌더러에 포함했기 때문에 편집은 로터리 방식으로 작동합니다. 셀은 항상 편집 모드에 있으며 DataGrid의 기본 제공 편집 모드를 사용하지 않습니다.

DataGrid에 'editable = true'가 필요하기 때문에 두 번째 경우에는 itemEditor가 Flex에 의해 활성화되지 않습니다. editable을 true로 설정하면 사용자가 셀을 클릭 할 때 itemEditor가 활성화되어야합니다.

세 번째 방법은 DataGrid에 'editable = true'를 사용하고 itemRenderer를 유지하고 'rendererIsEditor'를 열에 설정하는 것입니다.

여기에서 예제를 확인하십시오. ItemRendererItemEditor 사이 Adobe Flex doc

+0

안녕하세요, 귀하의 재생을위한 감사합니다,하지만 나는 하나의 의심, DataGrid "editable = true", itemRenderer 유지하고 "rendererIsEditor"열에 설정하지 않는 것입니다 또한 열을 편집 할 수 있습니다. ItemRenderer와 ItemEditor의 차이점은 무엇입니까? 왜 우리는 ItemEditor를 사용할 것입니까? – Ashish

+0

DataGrid를 "editable = true"로 유지하고 편집 할 수없는 열에 대해 DataGridColumn "editable = false"를 설정합니다. itemRenderer 및 itemEditor를 삭제합니다. 가장 간단한 편집 가능한 DataGrid로 돌아갑니다. 이것은 귀하의 필요에 충분할 수 있습니다. 이게 어떻게 작동하는지 알려주세요. – Chris

3

차이 : 당신의 itemRenderer를 사용하는 경우

당신이 당신의 구성 요소의 측면을 변경합니다. 귀하의 경우에 당신이 datagrid 열을 가지고 있고 당신이 당신의 칼럼에 가지고있는 이미지와 함께 itemRenderer를 적용하면 이미지가 나타납니다.

ItemEditor를 사용하면 해당 열을 변경하려고 할 때 구성 요소의 측면에서 작동합니다. 열을 클릭 할 때 TextInput으로 항목 편집기를 열면 텍스트 입력이 표시됩니다.

Flex는 기본적으로 렌더러가 편집기이므로 ItemRenderer에서 열을 편집 할 때 사용할 수있는 것과 동일한 특성을 구현하고자 할 때 기본적으로 ItemRenderer 및 ItemEditor를 자동으로 관리합니다.

이러한 기능을 별도로 사용하려면 rendererIsEditor = false을 넣을 수 있지만 두 가지 기능을 구현해야합니다.

제 설명이 명확하길 바랍니다. 당신은 다른 의심이 있다면 말해봐

+0

안녕하세요 @ 조 타 라스 귀하의 답변 주셔서 감사합니다 지금은 차이점을 이해 하나의 질문 "ItemEditor 특정 기능이 있나요? rendererIsEditor = true를 만들어 IdemRenderer에서 동일한 편집 작업을 할 수 있기 때문에 왜 우리가 원했던 ItemEditor? " – Ashish

+0

@Ashish : 안녕하세요, 죄송 합니다만, 새로운 질문을 이해하지 못합니다. "rendererIsEditor = true로 설정 한 다음 ItemEditor를 사용하면 왜 동일한 작업을 수행 할 수 있기 때문에 ItemEditor의 특정 기능이 있습니까?" –